[英]Pandas: filter dataframe by multiple conditions with column containing nan
連接到: Pandas:添加具有來自其他數據幀的匹配行索引的列
將多列與第二個數據幀中的相應列匹配,並從第二個數據幀中返回匹配行的索引。
df1['new_column'] = df1.apply(lambda x: df2[(df2.col1 == x.col1)
& (df2.col2 == x.col2)
& (df2.col3 == x.col3)
& (df2.col4 == x.col4)
& (df2.col5 == x.col5)].index[0], axis=1)
上面的代碼就像一個魅力......除非其中一列可以包含 nan 值,因為 nan != nan. 換句話說,即使df1中的col1:col4匹配df1和df2中的df2和col5是nan它也無法匹配它返回空索引對象。
如果 col1:col5 匹配,無論它們是否包含值或 nan,我都需要它返回 True。
任何人都知道解決方案?
這里的一種解決方法是簡單地使用fillna
將所有na
值替換為類似'NaN'
字符串的內容。
只需使用:
df1 = df1.fillna('NaN')
df2 = df2.fillna('NaN')
然后使用您現有的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.