![](/img/trans.png)
[英]How can I find all rows with a value in one column which corresponds to more than one value in another column in a pandas dataframe?
[英]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.