【发布时间】:2019-07-24 17:40:32
【问题描述】:
我有两个数据框,根据 df1 的哪一列出现来自 df2 的值,必须将来自 df2 的值复制到 df1 的另一个特定列。
我尝试循环遍历数据框,但由于数据量大,它需要很长时间。我确信一定有一些“流行”的方式来做到这一点。
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 之外,还有其他优雅的方法吗?
谢谢!
【问题讨论】: