我有一个csv文件我希望加载到pandas,但格式化给我一些问题。文件是这样的:
版本1
,日期时间,名称,价值
,26 / Jan / 2016 07:35:52,Name1,340rqi
,26 / Jan / 2016 07:00:00,Name2,1.00E + 005
,26 / Jan / 2016 07:00:00,Name3,pulling_9
(这是一个混乱的文件,但重点是有一个空的第一列和一个空的第一行,在位置0,0只有'版本1')
我正在使用以下代码将其纳入我的DF:
filename_cv = '123456789.csv'
sheet_cv = filename_cv[:-4] #trimming off the .csv part
df_cv = pandas.read_csv(filename_cv, sheet_cv,engine='python')
但输出不可取。这就是我得到的:
df_cv
Out [4]:
版本1
0,26 / Jan / 2016 07:35:52,Name1,340rqi
1,26 / Jan / 2016 07:00:00,Name2,1.00E + 005
2,26 / Jan / 2016 07:00:00,Name3,pulling_9
我认为那些领先的逗号是我的问题,但有没有一种好方法可以摆脱它们?
我知道我可以修剪行并更改索引(跳过),但是我确定这些主要逗号是我的问题的来源。
我希望逗号分隔值可以像普通的那样进入自己的列。
怎么了?
答案 0 :(得分:1)
试试这个:
In [313]: df = pd.read_csv('/path/to/file.csv', skiprows=1)
In [314]: df
Out[314]:
Unnamed: 0 Date Time Name Value
0 NaN 26/Jan/2016 07:35:52 Name1 340rqi
1 NaN 26/Jan/2016 07:00:00 Name2 1.00E+005
2 NaN 26/Jan/2016 07:00:00 Name3 pulled_9
In [315]: df = df.drop(df.columns[0], axis=1)
In [316]: df
Out[316]:
Date Time Name Value
0 26/Jan/2016 07:35:52 Name1 340rqi
1 26/Jan/2016 07:00:00 Name2 1.00E+005
2 26/Jan/2016 07:00:00 Name3 pulled_9
如果您想解析日期时间列,请使用:
df = pd.read_csv(io.StringIO(data), skiprows=1, parse_dates=['Date Time'])
答案 1 :(得分:1)
更新
可以通过不在read_csv()命令中指定工作表名称来解决此问题。显而易见的' duh'因为csv文件没有多张表。
答案 2 :(得分:1)
为分隔符提供替代参数会使','明确。
import pandas as pd
filename_cv = '123456789.csv'
sheet_cv = filename_cv[:-4] #trimming off the .csv part
df = pd.read_csv(filename_cv, sheet_cv, engine='python', skiprows=1, delimiter=',')
df = df.filter(regex='^((?!Unnamed).)*$')
print df
Date Time Name Value
0 26/Jan/2016 07:35:52 Name1 340rqi
1 26/Jan/2016 07:00:00 Name2 1.00E+005
2 26/Jan/2016 07:00:00 Name3 pulled_9