我有一个如下所示的 .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
For.Ex-在第一行,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
中存在问题csv
,因为如果分隔符是,
并且某些值,
显然包含被添加到有效 csv 的值中:
如果有问题的值仅出现在第一列或最后一列,则不是下面的通用解决方案。
DataFrame
通过分隔符创建一列,该列不在数据中|
,并由rsplit
( split
) 与参数n
by拆分number 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句