在使用块读取大型csv文件时,在连接块之前如何处理除一列之外的所有列

时间:2017-09-20 20:11:47

标签: python pandas csv chunks

我有一个大的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)

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

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

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