如何使用pandas读取长度可变的无标题csv
我有一个csv文件,它没有标题列,每行都有可变长度的记录 每个记录最多可以有398个字段,我想在我的数据框中只保留256个字段,因为我只需要处理这些字段 下面是该文件的精简版本如何使用pandas读取长度可变的无标题csv,pandas,Pandas,我有一个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) 在第一次生成元数
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字段创建数据帧?这是我的第一步吗
我对熊猫很陌生,所以请原谅我的无知。我花了很长时间试图寻找一个解决办法,但还是找到了
# 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
因此,只需更改
范围
值。尝试使用usecols
(在中阅读更多内容)。。。但是,由于csv只是文本文件,熊猫仍然需要加载和读取完整文件以识别列,usecols
只控制解析到DataFrame中的内容考虑使用二进制文件快速访问列