使用任何空值删除所有行没有问题,但我只希望某些行以空值删除并保留其他行
例如:
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
但是,如果我只想让芝加哥和迈阿密掉队呢?如何在列' city'?上设置该条件?所以我最终得到:
index city lo hi
1 Boston nan nan
2 New York 54 89
4 Seattle 49 nan
答案 0 :(得分:2)
使用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
内的所有索引值。