我正在尝试使用熊猫读取csv文件。文件标题后有14993行。
data = pd.read_csv(filename, usecols=['tweet', 'Sentiment'])
print(len(data))
它打印:14900,如果我在文件末尾添加一行,它现在是14901行,所以不是因为内存限制等。我也尝试了“ error_bad_lines”,但是什么都没有改变。
答案 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']})
如果数据集确实很大,则应重写代码以仅使用生成器(这并不难。)。
使用这样的技术时,唯一要记住的是,如果您有数字,则应在需要时将这些列重铸为合适的数据类型,但是如果人们尝试对填充有字符串的数据帧进行数学运算,这将变得不言而喻。