簡體   English   中英

如何將一個數據框(多於一列)的值與另一個數據框(多於一列)的值匹配?

[英]How can I match the values of one dataframe(more than column) with values of another dataframe(more than one column)?

df1:

    Symbol           Aliases
0   MLH1             COCA2, FCC2, HNPCC, HNPCC2, hMLH1
1   MSH2             COCA1, FCC1, HNPCC, HNPCC1, LCFS2
2   CCAT2            LINC00873, NCCP1
3   MACC1            7A5, SH3BP4L

在這里,別名可以有 NaN 值。

df2:

   Symbol_1        Symbol_2
0  NaN             DHX9
1  COCA1           MSH2
2  H2AC18          NaN
3  NCCP1           NaN

我希望將結果作為一個列表,其中包含 df1 和 df2 中相同的所有符號。

same_list = [MSH2, CCAT2]

如果 df2['Symbol_1', 'Symbol_2'] 匹配 df1['Symbol'] 它將打印 Symbol 但如果它匹配 df1['Aliases'] 它將從 df1 打印相應的 Symbol。

我們可以看到 NCCP1 與 df1['Aliases'] 匹配,但它會打印相應的符號,即 CCAT2

您可以使用flatten()set()來獲取您的值。

如果df1是:

  Symbol                        Aliases
0   MLH1  COCA2,FCC2,HNPCC,HNPCC2,hMLH1
1   MSH2  COCA1,FCC1,HNPCC,HNPCC1,LCFS2
2  CCAT2                LINC00873,NCCP1
3  MACC1                    7A5,SH3BP4L

df2是:

Symbol_1 Symbol_2
0      NaN     DHX9
1    COCA1     MSH2
2   H2AC18      NaN
3    NCCP1      NaN

然后這個腳本:

df1.Aliases = df1.Aliases.str.split(',')
s1 = set(df1.explode('Aliases').values.flatten())
s2 = set(df2.values.flatten())
print(s1 & s2)

印刷:

{'NCCP1', 'COCA1', 'MSH2'}

暫無
暫無

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

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