gpt4 book ai didi

python - 内存错误:- How to get data from one dataframe to another using one common ID column?

转载 作者:行者123 更新时间:2023-12-01 07:28:00 24 4
gpt4 key购买 nike

我有两个数据帧 df1 和 df2。它们之间有一个共同的 ID 列。我需要根据 df1 中的 ID 从 df2 列中提取数据,但是我面临 MemoryError,因为数据帧很大,每个数据帧超过 300 万个数据点。

我尝试过使用:-

aq = pd.DataFrame(np.where(df2[df2['pid1'].isin(df1['shortId'])]))

但遇到内存错误。有什么有效的方法可以做到这一点吗?

数据框如下所示:-

df1:-

ShortID x   y   z
qwe 1 1 1
asd 1 1 1
zxc 1 1 1
rty 1 1 1
fgh 1 1 1
vbn 1 1 1

df2:-

pid1    pid2    Col1    Col2    Col3    Col4
qwe qasd values values values values
asd uio values values values values
zxc plm values values values values
rty okn values values values values
fgh uhb values values values values
vbn tgv values values values values
qasd qwe values values values values
uio asd values values values values
plm zxc values values values values
okn rty values values values values
uhb fgh values values values values
tgv vbn values values values values

结果应如下所示:-

ShortID x   y   z   Col1    Col2    Col3    Col4
qwe 1 1 1 values values values values
asd 1 1 1 values values values values
zxc 1 1 1 values values values values
rty 1 1 1 values values values values
fgh 1 1 1 values values values values
vbn 1 1 1 values values values values

最佳答案

merge应该更有效率:

df1.merge(df2, left_on='ShortID', right_on='pid1', how='left').drop(columns=['pid1','pid2'])

如果这仍然引发内存错误,您可能需要使用 dask dataframes ,即将数据读入 dask 数据帧并以与上面相同的方式合并它们(除了 dask 2.2.0 不支持 drop 中的 columns 参数,因此您必须使用 .drop('rkey', axis=1))

关于python - 内存错误:- How to get data from one dataframe to another using one common ID column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57355506/

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