Python 如何读取、提取和合并多个大型csv(1G~)?
我有多个巨大的csv(1GB~),如下所示Python 如何读取、提取和合并多个大型csv(1G~)?,python,csv,pandas,merge,Python,Csv,Pandas,Merge,我有多个巨大的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并进行一些提取,然后合并…(以节省内存大小) 这对我来说很复杂 我可以问一下如何读取和合
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吗?(以及如何节省内存)- 使用
获取文件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
重要的问题是修改数据帧的速度很慢。 如果您有许多文件(可能需要进行实验),更好的方法是将结果聚合到一个列表中,并最终转换为数据帧
l = []
while df in generate_df():
l += df[df.A==1].to_dict('records')
big_df = pandas.DateFrame(l)
对不起,我编辑了我的问题!