我有一个很大的csv文件(7GB),我使用以下代码在Pandas中进行读取:

chunks=pd.read_table('input_filename', chunksize=500000)
df=pd.DataFrame()
df=pd.concat((chunk==1) for chunk in chunks)


这对我有用,因为文件是一键编码的,所以chunk==1部分将0和1转换为布尔值,从而节省了一些内存使用量。

现在,我想使用相同的方法读取另一个文件,唯一的问题是新文件具有一个ID列,该列不是单行编码的。我的问题是:如何保持ID列完整并以相同方式转换其余列?

我尝试了一些子设置技术,包括:

df=pd.concat((chunk.loc[:, -1]==1) for chunk in chunks)

但到目前为止,他们都没有工作。

谢谢!

最佳答案

尝试这个:

chunks = pd.read_csv('input_filename', chunksize=500000, index_col='ID')
df = pd.concat([chunk.astype(bool) for chunk in chunks]).reset_index()

10-08 16:13