我有一个csv文件,它没有标题列,并且每行都有可变长度的记录。
每条记录最多可以包含398个字段,而我只想在数据框中保留256个字段。因为我只需要处理这些字段即可。
下面是该文件的精简版。
1,2,3,4,5,6
12,34,45,65
34,34,24
在上面,我想在调用read_csv时仅保留每行3个字段(类似于上面的256个字段)。
我尝试了以下
import pandas as pd
df = pd.read_csv('sample.csv',header=None)
当熊猫第一次使用元数据来生成元数据时,出现以下错误。
File "pandas/_libs/parsers.pyx", line 2042, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 5 fields in line 4, saw 10
我能想到的唯一解决方案是使用
names = ['column1','column2','column3','column4','column5','column6']
在创建数据框时。
但是对于最大可能为50MB的真实文件,我不想这样做,因为这会占用大量内存,并且我试图使用aws lambda运行它,这会产生更多的成本。我每天必须处理大量文件。
我的问题是我可以在仅读取csv的同时使用更薄的256字段创建数据帧吗?那可以成为我的第一步吗?
我对大熊猫很陌生,所以请忍受我的无知。我试图寻找一种解决方案很长时间,但可以找到一个解决方案。
答案 0 :(得分:1)
# only 3 columns
df = pd.read_csv('sample.csv', header=None, usecols=range(3))
print(df)
# 0 1 2
# 0 1 2 3
# 1 12 34 45
# 2 34 34 24
因此只需更改range
的值即可。