[英]Add value to DF if column value matches value in list of another DF
[英]Pandas: Extract rows of a DF when a column value matches with a column value of another DF
我有兩個DF1和DF2,如下所述。 兩個數據框的第一列“ POS”可能都有匹配項,但其他列將有所不同。 我想比較兩個數據幀的“ POS”列,如果DF1的“ POS”值位於DF2的“ POS”列中,則我想將該行存儲在新的DF1數據幀中,並對DF2進行相同操作。 我可以通過保留POS作為鍵並比較它們以獲得相應的值來輕松地使用字典。 但是字典不會接受重復的“ POS”值,所以我想知道Pandas DF中是否有解決方案。
df1 =
POS id freq
0 100 "idex" 3.0
1 102 "ter" 2.0
2 102 "pec" 4.0
3 103 "jek" 4.0
4 104 "jek" 4.0
df2 =
POS id freq
0 100 "treg" 3.0
1 102 "dfet" 2.2
2 102 "idet" 7.0
3 108 "jeik" 1.0
4 109 "jek" 4.0
Expected:
new_df1 =
POS id freq
0 100 "idex" 3.0
1 102 "ter" 2.0
2 102 "pec" 4.0
new_df2 =
POS id freq
0 100 "treg" 3.0
1 102 "dfet" 2.2
2 102 "idet" 7.0
您可以對兩個數據框使用isin
:
new_df1 = df1[df1.POS.isin(df2.POS)]
new_df2 = df2[df2.POS.isin(df1.POS)]
>>> new_df1
POS id freq
0 100 idex 3.0
1 102 ter 2.0
2 102 pec 4.0
>>> new_df2
POS id freq
0 100 treg 3.0
1 102 dfet 2.2
2 102 idet 7.0
我相信您正在描述經典的加入問題。 我建議使用.merge()
方法:
df = pd.merge(df1, df2, how='left', on='POS')
這將返回一個以df1.POS作為索引的新數據幀。 來自df2的所有列都將位於df1中,但僅適用於匹配的POS值。 您可以在oder中使用how=
參數來獲得所需的內容。 有關更多信息,請參見sql連接的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.