我有多个巨大的csv(1GB~),如下所示
path = 'C:/Users/csvfiles'
sample1.csv
A B C
0 a A
0 c C
1 d D
sample2.csv
A B C
1 e E
0 f G
0 g G
我想得到以下df
A B C
1 d D
1 e E
我想为columnA提取1。 它可能变得容易处理(考虑到内存大小)。
在我看来,我应该使用chunksize并处理一些提取然后合并...(以节省内存大小)
这对我来说非常复杂。
我可以问一下如何读取和合并巨大的csv?(以及如何节省内存)
答案 0 :(得分:1)
glob
抓取文件pd.concat
将它们组合在一起query
获取列A
为1
代码
pd.concat(
[pd.read_csv(f) for f in glob('csvs/*')]).query('A == 1')
A B C
2 1 d D
0 1 e E
或 ,如果您想在索引的第一级跟踪每一行的来源。
pd.concat(
{i: pd.read_csv(f) for i, f in enumerate(glob('csvs/*'))}).query('A == 1')
A B C
0 2 1 d D
1 0 1 e E
答案 1 :(得分:0)
重要的问题是修改数据帧很慢。 如果您有许多文件(您可能需要进行实验),更好的方法是将结果聚合在一个列表中,并最终转换为数据框
l = []
while df in generate_df():
l += df[df.A==1].to_dict('records')
big_df = pandas.DateFrame(l)