gpt4 book ai didi

python - 内部加入巨大的数据框(约 200 万列)

转载 作者:太空狗 更新时间:2023-10-30 02:24:33 27 4
gpt4 key购买 nike

我正在尝试根据在每个数据框中找到的一列(称为“名称”)中的匹配值来连接两个数据框(df1df2) .我已经尝试使用 R 的 inner_join 函数以及 Python 的 pandas merge 函数进行此操作,并且能够使两者在我的数据的较小子集上成功运行。我认为我的问题出在数据框的大小上。

我的数据框如下:

  • df1 的“名称”列有 5 个附加列,并且有大约 900 行。
  • df2 的“名称”列有约 200 万列,并且有约 900 行。

我已经尝试过(在 R 中):

df3 <- inner_join(x = df1, y = df2, by = 'Name') 

我也尝试过(在 Python 中,df1df2 是 Pandas 数据帧):

df3 = df1.merge(right = df2, how = 'inner', left_on = 1, right_on = 0)   

(其中“名称”列位于 df1 的索引 1 和 df2 的索引 0 处)

当我将以上内容应用于我的完整数据帧时,它会运行很长时间并最终崩溃。此外,我怀疑问题可能出在我的 df2 的 200 万列上,因此我尝试将它(按行)子设置为较小的数据框。我的计划是将 df2 的小子集与 df1 合并,然后在最后将新数据帧行绑定(bind)在一起。然而,加入更小的分区 df2 是不成功的。

如果有人能提供任何建议,我将不胜感激。

最佳答案

谢谢大家的帮助!按照@shadowtalker 的建议使用data.table,极大地加快了这个过程。仅供引用以防有人尝试做类似的事情,df1 大约为 400 mb,我的 df2 文件大约为 3gb。

我能够完成如下任务:

library(data.table)
df1 <- setDT(df1)
df2 <- setDT(df2)
setkey(df1, Name)
setkey(df2, Name)
df3 <- df1[df2, nomatch = 0]

关于python - 内部加入巨大的数据框(约 200 万列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728432/

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