首页 > 解决方案 > pandas read_csv() skiprows=[0] 给出问题?

问题描述

我正在尝试在熊猫中读取 csv。我的文件开始如下:

 Site,Tank ID,Product,Volume,Temperature,Dip Time
   aaa,bbb,....
   .....

我读了它:

df = pd.DataFrame()
    date_col = ['Dip Time']
    data = pd.read_csv(atg_path, delimiter=',', skiprows=[1], skipinitialspace=True,
                                   dayfirst=True,
                                   parse_dates=date_col)

在这里它跳过第一行数据。但我需要它。

如果我使用skiprows=[0],那么我会在某些列上出现错误,例如ValueError: 'Dip Time' is not in list

我不知道为什么?它不应该跳过任何数据。怎么了?

标签: pythonpandascsv

解决方案


我觉得skiprows这里的参数不是必须的,可以省略。

但如果传递 0 值,则意味着don't skip any rows

skiprows=0

import pandas as pd
from io import StringIO

temp="""Site,Tank ID,Product,Volume,Temperature,Dip Time
aaa,bbb,ccc,ddd,eee,fff
a,b,c,d,e,f
"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp))
print (df)
  Site Tank ID Product Volume Temperature Dip Time
0  aaa     bbb     ccc    ddd         eee      fff
1    a       b       c      d           e        f

temp="""Site,Tank ID,Product,Volume,Temperature,Dip Time
aaa,bbb,ccc,ddd,eee,fff
a,b,c,d,e,f
"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), skiprows=0)
print (df)
  Site Tank ID Product Volume Temperature Dip Time
0  aaa     bbb     ccc    ddd         eee      fff
1    a       b       c      d           e        f

但是如果通过[0]则意味着删除文件的第一行,这里是标题,这意味着"skip the 0'th row, i.e. the headed row

temp="""Site,Tank ID,Product,Volume,Temperature,Dip Time
aaa,bbb,ccc,ddd,eee,fff
a,b,c,d,e,f
"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), skiprows=[0])
print (df)
  aaa bbb ccc ddd eee fff
0   a   b   c   d   e   f

推荐阅读