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

How to drop NaN from one column according to another columns specific value

无法弄清楚如何根据另一列的特定值从特定列中删除 NaN 值。 DataFrame的一部分(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 没有效果。

您可以更改逻辑 - select 所有没有 1boolean indexing 中有 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)