首页 > 解决方案 > 如何根据索引将单列中的 NaN 替换为 0

问题描述

编码非常新,所以请原谅我缺乏知识
我目前有一个看起来像这样的数据框:

date         A     B    C    
2006-11-01   NaN   1    NaN
2016-11-02   NaN   NaN  1
2016-11-03   1     NaN  NaN
2016-11-04   NaN   1    NaN
2016-11-05   NaN   1    NaN
2016-11-06   NaN   NaN  NaN
2016-11-07   NaN   1    NaN

例如,我想要做的是:
将 2016 年 11 月 3 日之后的所有日期的 A 列中的所有 NaN 替换为 0,并且能够对每一列执行相同的操作,但对应的日期不同。

我努力了

for col in df:
    if col == 'A' & 'date' > '2016-11-03':
        value_1 = {'A':0}
        df = df.fillna(value=value_1)

但我收到了这个错误TypeError: unsupported operand type(s) for &: 'str' and 'str'
我确定这与我缺乏知识有关,但我不确定如何继续。

编辑:我正在寻找的是这样的:

date         A     B    C    
2006-11-01   NaN   1    NaN
2016-11-02   NaN   NaN  1
2016-11-03   1     NaN  NaN
2016-11-04   0     1    NaN
2016-11-05   0     1    NaN
2016-11-06   0     NaN  NaN
2016-11-07   0     1    NaN

标签: pythonpandas

解决方案


该条件由两部分组成:在某个日期之后和为 NaN。

condition = (df['date'] > '2016-11-03') & df['A'].isnull()

现在,选择符合条件的行,并使 A 列中的相应项目等于 0:

df.loc[condition, 'A'] = 0

推荐阅读