python / pandas read_csv中的主要逗号

时间:2016-05-25 16:32:52

标签: python csv pandas dataframe

我有一个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

我认为那些领先的逗号是我的问题,但有没有一种好方法可以摆脱它们?

我知道我可以修剪行并更改索引(跳过),但是我确定这些主要逗号是我的问题的来源。

我希望逗号分隔值可以像普通的那样进入自己的列。

怎么了?

3 个答案:

答案 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