2014-12-30 107 views
0

我无法读取csv文件。问题是由于文件的结构。我想将它读入一个熊猫数据框对象,但有些行有更多列,然后是其他列。例如,我可能希望大多数数据是在这样的形式:阅读带熊猫杂乱结构的csv文件

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

有没有一种方法可以让我在通过线csv文件读取,这样它会创建两个数据帧,一个与预期列数和另一个与行需要进一步检查?

+1

DataFrames本质上是表格式的。没有DataFrame这样的东西,其中不同的行具有不同数量的列。您最终打算如何处理值过多的行? – BrenBarn

+0

我需要查看并查看重复的值并将其删除。每行应该有40列,但一些值是重复的,因此行被移动。 – knop

回答

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 

数据的所有帧,处理后分离它(包括促进第一行回到列名)应该很简单。

+0

谢谢。这是我开始前进的方法。 – knop

0

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