簡體   English   中英

Pandas:通過包含 nan 的列按多個條件過濾數據框

[英]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匹配df1df2中的df2col5nan它也無法匹配它返回空索引對象。
如果 col1:col5 匹配,無論它們是否包含值或 nan,我都需要它返回 True。

任何人都知道解決方案?

這里的一種解決方法是簡單地使用fillna將所有na值替換為類似'NaN'字符串的內容。

只需使用:

df1 = df1.fillna('NaN')
df2 = df2.fillna('NaN')

然后使用您現有的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM