[英]Find common elements in two dataframes
我有兩個數據df1
和df2
具有相同的列。 我想在列中找到共同的元素。 例如
df1 :
Col1 Col2 Nam1 Nam2 Net
AD AS AS ADS AB
BF SA WQ AFW AF
RW KJ IQ QIE LK
df2 :
Col1 Col2 Nam1 Nam2 Net
RW WQ HF HGJ AB
BF AS DD VCC LJ
RW KJ IQ ADS JH
DS QW LJ NB LK
我想要以下(在網上)
Col1 Col2 Nam1 Nam2 Net
AD AS AS ADS AB
RW WQ HF HGJ AB
RW KJ IQ QIE LK
DS QW LJ NB LK
我試過如下:
df=pd.merge(df1, df2, on='Net', how='inner')
但它重復了所有列的名稱(_x 和 _y),而且它似乎沒有只提取共同的元素。
IIUC,您只想要那些共享相同凈值的行嗎? 你可以從,
vals = set(df1['Net']).intersection(df2['Net'])
print (vals)
# {'AB', 'LK'}
現在,過濾掉這些值並連接:
pd.concat([
df1.query('Net in @vals'),
df2.query('Net in @vals')], ignore_index=True)
Col1 Col2 Nam1 Nam2 Net
0 AD AS AS ADS AB
1 RW KJ IQ QIE LK
2 RW WQ HF HGJ AB
3 DS QW LJ NB LK
一種明確的方法是:
common_items = set(df1['Net']) & set(df2['Net'])
df1_common = df1[df1['Net'].isin(common_items)]
Col1 Col2 Nam1 Nam2 Net
AD AS AS ADS AB
RW KJ IQ QIE LK
df2_common = df2[df2['Net'].isin(common_items)]
Col1 Col2 Nam1 Nam2 Net
RW WQ HF HGJ AB
DS QW LJ NB LK
pd.concat([df1_common, df2_common])
Col1 Col2 Nam1 Nam2 Net
AD AS AS ADS AB
RW WQ HF HGJ AB
RW KJ IQ QIE LK
DS QW LJ NB LK
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.