我正在jupyter lab
使用pandas
, 版本0.20.1
。我有一个带有 DatetimeIndex 的数据透视表,例如
In [1]:
pivot = df.pivot_table(index='Date', columns=['State'], values='B',
fill_value=0, aggfunc='count')
pivot
Out [1]:
State SAFE UNSAFE
Date
2017-11-18 1 0
2017-11-22 57 42
2017-11-23 155 223
该表计算特定日期发生的所有事件,可以是SAFE
或UNSAFE
。我需要对结果表重新采样并对结果求和。
以每日频率对表格进行重新采样会在NaNs
没有数据的日子引入。令人惊讶的是,我不能NaNs
用 pandas'归咎于那些fillna()
。
In [2]:
pivot = pivot.resample('D').sum().fillna(0.)
pivot
Out [2]:
State SAFE UNSAFE
Date
2017-11-18 1.0 0.0
2017-11-19 NaN NaN
2017-11-20 NaN NaN
2017-11-21 NaN NaN
2017-11-22 57.0 42.0
2017-11-23 155.0 223.0
任何人都可以解释为什么会发生这种情况,我该如何摆脱这些NaNs
?我可以做一些事情
for col in ['SAFE', 'UNSAFE']:
mov.loc[mov[col].isnull(), col] = 0
然而,这看起来相当难看,而且我想了解为什么第一种方法不起作用。