如何根据另一列的特定值从一列中删除NaN

2022-04-14 00:00:00 python pandas dataframe nan drop

问题描述

不知道如何根据另一个特定列的值从特定列中删除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中没有1nan的情况下选择所有值:

#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

相关文章