[英]Filter a pandas Dataframe based on specific month values and conditional on another column
[英]Filter values from one dataframe based on conditional checks on another dataframe
考慮這兩個數據框(簡化示例):
DF1
Name Age
0 Tom 20
1 nick 21
2 krish 19
3 jack 18
DF2
Name Age
0 krish 40
1 jack 18
2 Tom 50
3 Jim 21
請注意,出現在兩者中的名稱索引不匹配(我的數據集就是這種情況)。
我想 select 來自 DF1 的那些行,其中名稱在 DF2 中,並且該人的年齡與 DF2 中的相應值不匹配。 所以預期的 output 是:
Name Age
0 Tom 20
2 krish 40
我可以過濾與一個條件匹配的行(例如,名稱在 DF2 中),但我無法弄清楚如何同時檢查這兩個條件。 有任何想法嗎?
In: df1[df1['Name'].isin(df2['Name'].tolist())]
Out:
Name Age
0 Tom 20
2 krish 19
3 jack 18
您可以在過濾掉 dataframe 之前使用merge
:
>>> df1.merge(df2, on='Name', how='left', suffixes=('', '2')) \
.query('Age != Age2')[df1.columns]
Name Age
0 Tom 20
1 krish 19
您使用update
然后比較該值以查看它是否正在更新
dfTemp = df1.copy()
dfTemp = df1.set_index('Name').copy()
dfTemp.update(df2.set_index('Name'))
df1[df1.Age!=dfTemp.Age.values]
Out[405]:
Name Age
0 Tom 20
2 krish 19
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.