簡體   English   中英

在 pandas dataframe 條件下過濾 nan

[英]Filtering nans on condition in pandas dataframe

我有一個像這樣的 dataframe:

   COL1  COL2
0     1     2
1     1     NaN
2     2     6
3     2     8
4     3     10
5     3     NaN
6.    4     NaN

如您所見,Col1 中有重復值,我想要一個像這樣的 dataframe:

   COL1  COL2
0     1     2
1     2     6
2     2     8
3     3     10
4     4     NaN

基本上,如果 col1 中的相同值在 col2 中具有 nan 值,那么我想刪除具有 NaN 值的行。 但是,如果這是 Col2 中唯一可用於 Col1 中的值的值,我不會嘗試將 NaN 值一起移動

因此,我知道我不能使用它:

new_table = old_table[~old_table['COL2'].isna())

因為這將刪除所有NaN值,這不一定是我正在尋找的

您可以使用pandas.DataFrame.duplicated . 與pandas.DataFrame.isna

>>> df[~(df.COL1.duplicated(keep=False) & df.COL2.isna())]

   COL1  COL2
0     1   2.0
2     2   6.0
3     2   8.0
4     3  10.0
6     4   NaN

暫無
暫無

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

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