Python 如何根据另一列的特定值从一列中删除NaN
无法确定如何根据另一列特定值从特定列中删除NaN值。 数据帧的一部分(Python 如何根据另一列的特定值从一列中删除NaN,python,pandas,dataframe,nan,drop,Python,Pandas,Dataframe,Nan,Drop,无法确定如何根据另一列特定值从特定列中删除NaN值。 数据帧的一部分(df): 我需要从vol.中删除nan值,但仅当组中的相应值为1时 我试过: df.loc[df['group'] == 1,'vol.'].dropna(inplace=True) 但是df仍然具有所有值,因为dropna无效。您可以更改逻辑-使用nans在以下位置选择不带1的所有值: 使用以下命令: df = df.loc[df['group'] == 1,'vol.'] df.dropna(inplace=True)
df
):
我需要从vol.
中删除nan值,但仅当组中的相应值为1时
我试过:
df.loc[df['group'] == 1,'vol.'].dropna(inplace=True)
但是df
仍然具有所有值,因为dropna无效。您可以更改逻辑-使用nan
s在以下位置选择不带1
的所有值:
使用以下命令:
df = df.loc[df['group'] == 1,'vol.']
df.dropna(inplace=True)
虽然这段代码可以为这个问题提供一个解决方案,但最好添加上下文来说明它为什么/如何工作。这可以帮助未来的用户学习,并将这些知识应用到他们自己的代码中。在解释代码时,用户可能会以投票的形式向您提供正面反馈。
#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)