python - 如何加入/合并数据集?

标签 python pandas dataframe merge

我有两个数据框DF1DF2。我的目标是查找 DF2DF1 列 key ;并将返回结果保存在 DF3 中。有人可以帮我得到 DF3

例如

DF1                         DF2
map test1   test2           No.     outcome
A   NaN     NaN             1       AA
B   NaN     5               2       BB
C   1       6               3       CC
D   2       7               4       DD
E   3       NaN             5       EE
F   4       NaN             6       FF
G   5       8               7       GG
H   6       9               8       HH
I   7       10              9       II
                            10      JJ
                            11      KK
                            12      LL
                            13      MM

DF3
map test1   test2   outcome1        outcome2
A   NaN     NaN     NaN             NaN
B   NaN     5       NaN             EE
C   1       6       AA              FF
D   2       7       BB              GG
E   3       NaN     CC              NaN
F   4       NaN     DD              NaN
G   5       8       EE              HH
H   6       9       FF              II
I   7       10      GG              JJ

我目前正在使用两个连接函数,但这不是我需要的。它会删除 DF1 中的 NaN,并仅返回 test1test2 的重叠部分。

df3 = df1.merge(df2, how='inner', left_on='test1', right_on='No.')
df3 = df3.merge(df2, how='inner', left_on='test2', right_on='No.')

目前我的代码将返回以下内容:

DF3
map 测试 1 测试 2 结果 1 结果 2 C 1 6 AA FF D 2 7 BB GG G 5 8 EE HH H 6 9 FF II 我 7 10 GG JJ

最佳答案

在这种情况下, map 会更有效

DF3 = DF1.copy()
DF3['outcome1'] = DF1['test1'].map(DF2.set_index('No.')['outcome'])
DF3['outcome2'] = DF1['test2'].map(DF2.set_index('No.')['outcome'])

    map test1   test2   outcome1    outcome2
0   A   NaN     NaN     NaN         NaN
1   B   NaN     5.0     NaN         EE
2   C   1.0     6.0     AA          FF
3   D   2.0     7.0     BB          GG
4   E   3.0     NaN     CC          NaN
5   F   4.0     NaN     DD          NaN
6   G   5.0     8.0     EE          HH
7   H   6.0     9.0     FF          II
8   I   7.0     10.0    GG          JJ

关于python - 如何加入/合并数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43527318/

相关文章:

python - 如何将 pandas 数据框列转换为 native python 数据类型?

python - PNG 不会使用 image.getbbox() 自动裁剪

Python pandas 基于两列的分组进行排名/排序,每个输入都不同

python - 使用 pandas 数据框填充 flet 数据表

python - 使用 pandas to_csv 将结果写入 csv

dataframe - 如何使用 Julia、Pluto.jl 和 PlutoUI.jl 的 FilePicker 元素读取上传的 CSV 文件

python - 如何用 python 创建 $2y$14 的河豚哈希?

python - 将 'apply' 与 Pandas 数据框元素中的数组一起使用

python - 我似乎收到 NameError : 'gpio' is not defined

python - 根据另一个 DataFrame 选择一个 DataFrame 的列