问题描述
无法弄清楚如何根据另一列特定值从特定列中删除 NaN 值。
数据帧的一部分(df
):
vol. group
1186 10,448,898 1
1187 nan 0
1188 35,047,520 1
...
8329 130,703 0
8330 241,489 1
8332 nan 1
8333 101,142 0
8334 nan 1
我需要从 vol.
中删除 nan 值,但仅当 group
中的相应值为 1 时。
我试过了:
df.loc[df['group'] == 1,'vol.'].dropna(inplace=True)
但是 df
仍然具有所有值,因为 dropna 不起作用。
解决方法
您可以更改逻辑 - 在 boolean indexing
中选择所有没有 1
和 nan
的值:
#if necessary convert strings nan to missing values `NaN`s
df['vol.'] = df['vol.'].replace('nan',np.nan)
df = df[(df['group'] != 1) | df['vol.'].notna()]
print (df)
vol. group
1186 10,448,898 1
1187 NaN 0
1188 35,047,520 1
8329 130,703 0
8330 241,489 1
8333 101,142 0
,
使用这个:
df = df.loc[df['group'] == 1,'vol.']
df.dropna(inplace=True)