簡體   English   中英

根據其他列值刪除具有NaN的行

[英]Drop rows with NaNs based on other column values

我對刪除所有包含空值的行沒有問題,但是我只希望某些行包含空值並保留其他行

例如:

index  city      lo        hi
 0    Chicago    nan      75
 1    Boston     nan      nan
 2    New York   54       89
 3    Miami      nan      nan
 4    Seattle    49       nan

請記住,我的行多於5。因此, df.dropna(axis=0, how='any')只給我留下2 New York 54 89

但是,如果我只想讓芝加哥和邁阿密下降呢? 如何在“城市”列上設置該條件? 所以我最終會得到:

index   city     lo        hi
 1    Boston     nan      nan
 2    New York   54       89
 4    Seattle    49       nan

使用isin查找特定城市的所有行,然后沿第一個軸使用isnull ,並從原始數據框中刪除所有包含空值的行。

cities = ['Miami', 'Boston']
idx = df[df.city.isin(['Boston', 'Miami'])].isnull().any(1).index    
df = df.loc[df.index.difference(idx)]

print(df)
   index      city    lo    hi
0      0   Chicago   NaN  75.0
2      2  New York  54.0  89.0
4      4   Seattle  49.0   NaN

index.difference將返回所有索引值df.index不在idx

暫無
暫無

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

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