熊猫read_csv无法读取文件中的所有行

时间:2019-03-03 20:48:30

标签: python pandas csv

我正在尝试使用熊猫读取csv文件。文件标题后有14993行。

data = pd.read_csv(filename, usecols=['tweet', 'Sentiment'])
print(len(data))

它打印:14900,如果我在文件末尾添加一行,它现在是14901行,所以不是因为内存限制等。我也尝试了“ error_bad_lines”,但是什么都没有改变。

1 个答案:

答案 0 :(得分:1)

通过标题的名称可以认为您有自由文本。这可以轻松触发任何csv解析器。 无论如何,这是一个版本,可以轻松地使您跟踪csv中的不一致之处,或者至少提示要查找的内容……然后将其放入数据框。

import csv
import pandas as pd

with open('file.csv') as fc:
    creader = csv.reader(fc) # add settings as needed
    rows = [r for r in creader]
# check consistency of rows
print(len(rows))
print(set((len(r) for r in rows)))
print(tuple(((i, r) for i, r in enumerate(rows) if len(r) == bougus_nbr)))
# find bougus lines and modify in memory, or change csv and re-read it.

# assuming there are headers...
columns = list(zip(*rows))
df = pd.DataFrame({k: v for k, *v in columns if k in ['tweet', 'Sentiment']})

如果数据集确实很大,则应重写代码以仅使用生成器(这并不难。)。

使用这样的技术时,唯一要记住的是,如果您有数字,则应在需要时将这些列重铸为合适的数据类型,但是如果人们尝试对填充有字符串的数据帧进行数学运算,这将变得不言而喻。