簡體   English   中英

如何將一列中的值映射到另一個數據幀的另外兩列並提取兩列上的匹配值?

[英]How to map values in a column to two other column of another dataframe and extract matching values on both columns?

我有兩個數據框

df1

NAME
AB2
AB3
AB45
AB5
AB6
AB776
AB845
AB9
AB10

df2

G1  G2  Value
AB2 AB3   5
AB3 AB2   5
AB2 AB2   4
CXY AB3   0
AB3 GTZ   8
AB5 AB6   4
AB9 NUT3    6
CVC FGT   5
MKH CTY   8
LMN VUT   9
AB776   AB776   1
AB845   AB776   8

我想將df1['NAME']值映射到df2['G1']df2['G2']並提取與這些值匹配的列。

我試過如下:

df = df2[df2['G1'].isin(df1['NAME']) | df2['G2'].isin(df1['NAME'])]

但它也提取與單列匹配的所有值。 如果它映射到兩列,我想返回

預期輸出為:

G1    G2    Value
AB2   AB3   5
AB3   AB2   5
AB2   AB2   4
AB5   AB6   4
AB776   AB776   1
AB845   AB776   8

你在尋找&條件而不是|

df2[df2['G1'].isin(df1['NAME']) & df2['G2'].isin(df1['NAME'])]

輸出:

       G1     G2  Value
0     AB2    AB3      5
1     AB3    AB2      5
2     AB2    AB2      4
5     AB5    AB6      4
10  AB776  AB776      1
11  AB845  AB776      8

我認為你需要&

In [1242]: df2[df2['G1'].isin(df1['NAME']) & df2['G2'].isin(df1['NAME'])]
Out[1242]: 
       G1     G2  Value
0     AB2    AB3      5
1     AB3    AB2      5
2     AB2    AB2      4
5     AB5    AB6      4
10  AB776  AB776      1
11  AB845  AB776      8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM