Python 如果没有';熊猫的头不相配吗?
我试图从一个非常大的文本文件中获取行,该文件的元素与使用pandas的head相同。例如 假设我有一个如下所示的文本文件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
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
忽略元素较多(如页眉)的行,并删除元素较少(如页眉数)的行:
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