【问题标题】:Leading commas in python/pandas read_csvpython / pandas read_csv中的前导逗号
【发布时间】:2016-05-25 16:32:51
【问题描述】:

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

输出[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,pulled_9

我认为那些前导逗号是我的问题,但有没有什么好的方法可以摆脱它们?

我知道我可以修剪行并更改索引(skiprows),但我确信那些前导逗号是我问题的根源。

我希望逗号分隔的值像正常一样进入它们自己的列。

怎么了?

【问题讨论】:

  • read_csv()函数中使用skiprows=1参数
  • 这是真的,但列的前导逗号不会消失。这仍然会导致整行被格式化为字符串而不是单个 CSV 值。

标签: python csv pandas dataframe


【解决方案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'])

【讨论】:

    【解决方案2】:

    更新:

    这可以通过在 read_csv() 命令中不指定工作表名称来解决。明显的“duh”,因为 csv 文件没有多张纸。

    【讨论】:

      【解决方案3】:

      为分隔符提供替代参数会使“,”显式。

      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
      

      【讨论】:

        猜你喜欢
        • 2014-07-27
        • 2021-08-06
        • 2014-07-28
        • 2021-05-28
        • 2018-02-04
        • 2019-05-11
        • 2012-11-29
        • 2020-05-10
        • 2019-03-17
        相关资源
        最近更新 更多