gpt4 book ai didi

python - 根据列将一个数据框映射到另一个数据框

转载 作者:行者123 更新时间:2023-11-28 16:57:18 25 4
gpt4 key购买 nike

我有两个数据帧,根据 df1 的哪一列出现 df2 的值,必须将 df2 的值复制到 df1 的另一个特定列。

我尝试循环遍历数据帧,但由于数据量大,这需要很长时间。我敢肯定,一定有某种“ Pandas 式”的方法可以做到这一点。

import pandas as pd

data1 = {'A': ['X1', 'Y1'],
'B': ['X2', 'Y2'],
'A1': ['NaN','NaN'],
'B1': ['NaN','NaN'],
}

data2 = {'AB': ['X1', 'Y2', 'X2','Y1'],
'D': ['D1', 'D4', 'D3', 'D2'],
}
df1=pd.DataFrame(data1, columns=['A','B','A1','B1'])
df2=pd.DataFrame(data2, columns=['AB','D'])

如果在 df2 中找到 df1 列 A 的值,则必须将 D 的相应值复制到列 A1。如果在 df2 中找到 df1 列 B 的值,则必须将 D 的值复制到 B1 等...

有可能A/B中的某个值为NaN,或者df2中没有对应的值。

data1_goal = {'A': ['X1', 'Y1'],
'B': ['X2', 'Y2'],
'A1': ['D1', 'D2'],
'B1': ['D3', 'D4'],
}
df_goal=pd.DataFrame(data1_goal, columns=['A','B','A1','B1'])

除了遍历 df1 之外,还有其他优雅的方法吗?

谢谢!

最佳答案

 df1.merge(df2, left_on='A', right_on='AB').merge(
df1.merge(df2, left_on='B', right_on='AB'),
on=['A','B'])[['A', 'B', 'D_x','D_y']].rename(
columns={'D_x': 'A1','D_y':'B1'})

关于python - 根据列将一个数据框映射到另一个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57178769/

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