gpt4 book ai didi

python - 在 Pandas 中连接两个大型数据集的最佳方法

转载 作者:行者123 更新时间:2023-12-03 03:06:41 25 4
gpt4 key购买 nike

我正在从两个需要连接的不同数据库下载两个数据集。当我将它们存储为 CSV 时,每个文件大约有 500MB 左右。分别适合内存,但当我加载两者时,有时会出现内存错误。当我尝试将它们与 pandas 合并时,我肯定会遇到麻烦。

对它们进行外部联接以免出现内存错误的最佳方法是什么?我手头没有任何数据库服务器,但如果有帮助的话,我可以在我的计算机上安装任何类型的开源软件。理想情况下,我仍然想仅在 pandas 中解决它,但不确定这是否可能。

澄清一下:合并是指外部联接。每个表有两行:产品和版本。我想检查哪些产品和版本仅在左表、右表和两个表中。我用

做的
pd.merge(df1,df2,left_on=['product','version'],right_on=['product','version'], how='outer')

最佳答案

这似乎是 dask 的任务被设计用于。本质上,dask 可以在核外执行 pandas 操作,因此您可以处理不适合内存的数据集。 dask.dataframe API 是 pandas API 的子集,因此学习曲线不会太长。请参阅Dask DataFrame Overview页面了解一些其他 DataFrame 特定详细信息。

import dask.dataframe as dd

# Read in the csv files.
df1 = dd.read_csv('file1.csv')
df2 = dd.read_csv('file2.csv')

# Merge the csv files.
df = dd.merge(df1, df2, how='outer', on=['product','version'])

# Write the output.
df.to_csv('file3.csv', index=False)

假设 'product''version' 是唯一的列,将 merge 替换为:

df = dd.concat([df1, df2]).drop_duplicates()

我不完全确定这是否会更好,但显然未在索引上完成的合并在 dask 中是“慢”的,因此值得一试。

关于python - 在 Pandas 中连接两个大型数据集的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37756991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com