在名为" question "的数据框中,以下两列是从一个更大的数据框中复制过来的
{'Breddat': {0: Timestamp('2010-05-04 00:00:00'),
1: Timestamp('2011-02-02 00:00:00'),
2: Timestamp('2010-05-04 00:00:00'),
3: Timestamp('2011-04-27 00:00:00'),
4: Timestamp('2012-01-24 00:00:00'),
5: NaT,
6: Timestamp('2015-02-06 00:00:00'),
7: Timestamp('2016-02-04 00:00:00')},
'Result': {0: 176.0,
1: 97.0,
2: 162.0,
3: 112.0,
4: 81.0,
5: nan,
6: 87.0,
7: 97.0}}
如果我删除了缺少'Result'值的行,那么下面的代码计算'Cdat'工作
question['Cdat'] = (question['Breddat']) - question['Result'].map(dt.timedelta)
我不能删除主数据框架中缺失值的所有行(它们是其他事情所需要的)。我尝试了不同的方法来排除计算中缺失值的行,但没有成功。我对蟒蛇和熊猫不熟悉,似乎缺少一些基本的东西。
感谢在有缺失值的行时计算概念日期(Cdat)的任何帮助。
用pd.to_timedelta
代替datetime.timestamp
来处理NaN
值
question['Cdat'] = question['Breddat'] - pd.to_timedelta(question['Result'], unit='D')
>>> question
Breddat Result Cdat
0 2010-05-04 176.0 2009-11-09
1 2011-02-02 97.0 2010-10-28
2 2010-05-04 162.0 2009-11-23
3 2011-04-27 112.0 2011-01-05
4 2012-01-24 81.0 2011-11-04
5 NaT NaN NaT
6 2015-02-06 87.0 2014-11-11
7 2016-02-04 97.0 2015-10-30