用pandas读取带有凌乱结构的csv文件

时间:2014-12-30 06:25:15

标签: python csv pandas import-from-csv

我在阅读csv文件时遇到问题。问题是由于文件的结构。我想把它读成一个pandas dataframe对象,但有些行有更多的列,然后是其他行。例如,我可能希望大多数数据采用如下形式:

Col1,Col2,Col3   
a,b,c,   
a,b,c,   
a,a,b,c,   
a,b,c,c,   
a,b,c   

有没有办法可以逐行读取csv文件,这样就可以创建两个数据框,一个是预期的列数,另一个是需要进一步检查的行?

2 个答案:

答案 0 :(得分:2)

一种方式 - 低效但有效 - 是为了腾出比你需要的空间更多的空间:

>>> df = pd.read_csv("knop.csv", names=range(6))
>>> df
      0     1     2    3   4   5
0  Col1  Col2  Col3  NaN NaN NaN
1     a     b     c  NaN NaN NaN
2     a     b     c  NaN NaN NaN
3     a     a     b    c NaN NaN
4     a     b     c    c NaN NaN
5     a     b     c  NaN NaN NaN
>>> df = df.dropna(axis=1,how='all')
>>> df
      0     1     2    3
0  Col1  Col2  Col3  NaN
1     a     b     c  NaN
2     a     b     c  NaN
3     a     a     b    c
4     a     b     c    c
5     a     b     c  NaN

数据全部在一个帧中后,处理和分离它(包括将第一行提升回列名)应该很简单。

答案 1 :(得分:0)

您应该将此视为两阶段过程:数据清理,然后加载。您可以使用Python的内置csv模块执行清理步骤,逐个检查每一行。除非你只是想丢弃额外的列,否则你需要这样的东西来处理你的锯齿线。