Python 如果没有';熊猫的头不相配吗?

Python 如果没有';熊猫的头不相配吗?,python,pandas,Python,Pandas,我试图从一个非常大的文本文件中获取行,该文件的元素与使用pandas的head相同。例如 假设我有一个如下所示的文本文件 a,b,c,d 1,2,3,4 5,6 7,8,9,10 其中a、b、c和d是头部。在这种情况下,我不知道第二行是否来自a列、b列、c列或d列。数字6后面也没有逗号。在读取数据库时,有没有办法删除这些行?或者我应该在阅读之前删除这些行吗?我相信您可以使用witherror\u bad\u lines=False忽略元素较多(如页眉)的行,并删除元素较少(如页眉数)的行: d

我试图从一个非常大的文本文件中获取行,该文件的元素与使用pandas的head相同。例如

假设我有一个如下所示的文本文件

a,b,c,d
1,2,3,4
5,6
7,8,9,10
其中a、b、c和d是头部。在这种情况下,我不知道第二行是否来自a列、b列、c列或d列。数字6后面也没有逗号。在读取数据库时,有没有办法删除这些行?或者我应该在阅读之前删除这些行吗?

我相信您可以使用with
error\u bad\u lines=False
忽略元素较多(如页眉)的行,并删除元素较少(如页眉数)的行:

df = pd.read_csv('file', error_bad_lines=False).dropna()

print (df)
   a  b    c     d
0  1  2  3.0   4.0
2  7  8  9.0  10.0
预处理解决方案-为每行创建列表,使用标题长度测试长度并附加到列表列表,最后传递到
DataFrame
构造函数:

缺点是所有值都是字符串,因此必须通过以下方式进行强制转换:

或者创建具有另一个长度(如页眉)的行列表,并传递到
skiprows
参数:

omit = []
with open('file.csv') as csv_file:
    reader = csv.reader(csv_file, delimiter=',')
    header = next(reader)
    for i, row in enumerate(reader, 1):
        if (len(row) != len(header)):
            omit.append(i)

df = pd.read_csv('file.csv', skiprows=omit)
print (df)
   a  b  c   d
0  1  2  3   4
1  7  8  9  10
omit = []
with open('file.csv') as csv_file:
    reader = csv.reader(csv_file, delimiter=',')
    header = next(reader)
    for i, row in enumerate(reader, 1):
        if (len(row) != len(header)):
            omit.append(i)

df = pd.read_csv('file.csv', skiprows=omit)
print (df)
   a  b  c   d
0  1  2  3   4
1  7  8  9  10