如何在Python/Pandas中读取逗号(,)作为分隔符并显示在列名中的.csv文件?

2024-05-14 12:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的.csv文件,其中一些列名中也有逗号。你知道吗

#NAME,DATE,RECORDS,QUANTITY
Johb.W. Smith, LLC,03/01/2018 to 03/29/2018,728,32309.77
XXX Industrial Ltd, Inc.,07/27/2017 to 07/28/2017,2,312.00
XYSC,03/02/2018 to 03/29/2018,387,4468.50

当我尝试在Python/Panda中阅读时,可以使用逗号的列正在移动(因为系统将其视为新行值,实际上不是)。你知道吗

#NAME                         DATE                       RECORDS
Johb.W. Smith                 LLC                        03/01/2018         728.0   
XXX Industrial Ltd            Inc.                       07/27/2017      2.0    
XYSC                          03/02/2018                 387    

你知道吗例如-在第1行中,Johb.W.Smith LLC是一个完整的名称(实际上在原始csv文件中用逗号分隔,因此在panda中被视为一个新的单元格值)

有人能建议如何摆脱这个吗?实际输出应如下所示:

#NAME                      DATE                      RECORDS                 
Johb.W. Smith LLC          03/01/2018 to 03/29/2018  728    
XXX Industrial Ltd Inc.    07/27/2017 to 07/28/2017  2  
XYSC                       03/02/2018 to 03/29/2018  387    

Tags: 文件csvtonamedatexxxincsmith
2条回答

csv中存在问题,因为如果分隔符是,,并且某些值包含,,则显然会添加引号以引用有效csv的值:

如果有问题的值只在第一列或最后一列中,下面的解决方案就不是一般的了。你知道吗

通过分隔符创建一列DataFrame,该分隔符不在类似|的数据中,并通过参数nnumber of columns - 1拆分,此处按3拆分:

import pandas as pd

temp=u"""#NAME,DATE,RECORDS,QUANTITY
Johb.W. Smith, LLC,03/01/2018 to 03/29/2018,728,32309.77
XXX Industrial Ltd, Inc.,07/27/2017 to 07/28/2017,2,312.00
XYSC,03/02/2018 to 03/29/2018,387,4468.50"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="|")

df1 = df.iloc[:, 0].str.rsplit(',', n=3, expand=True)
df1.columns = df.columns.str.split(',')[0]
print (df1)
                      #NAME                      DATE RECORDS  QUANTITY
0        Johb.W. Smith, LLC  03/01/2018 to 03/29/2018     728  32309.77
1  XXX Industrial Ltd, Inc.  07/27/2017 to 07/28/2017       2    312.00
2                      XYSC  03/02/2018 to 03/29/2018     387   4468.50

手动输入数据,或编辑文件进行更正。你知道吗

可以使用regex或其他模式匹配来猜测值应该在哪里分离,但这些尝试并非在所有情况下都有效,而且很可能无法预测地失败。你知道吗

如果有人答应你一个csv文件,拒绝这个,并要求他们很好地提供一个正确格式的csv文件。你知道吗

相关问题 更多 >

    热门问题