我有一个数据框,其中一列包含多个称为“日期”的日期,我想将其转换为从今天的日期(2020-07-04)计算得出的日期,这是代码:
profile['membership_date'] = pd.to_datetime(profile['became_member_on'].astype(str), format='%Y%m%d')
该列是这样的:
0 2017-02-12
1 2017-07-15
2 2018-07-12
3 2017-05-09
4 2017-08-04
5 2018-04-26
然后我们得到今天的日期:
today_date = datetime.date.today().strftime('%Y-%m-%d')
#calculate days, I tried two different ways but still getting error
profile['membership_date'] - today_date
profile['membership_days'] = (profile['membership_date'] - today_date).days
#error:unsupported operand type(s) for -: 'DatetimeIndex' and 'str'
有人可以帮我吗,谢谢。
答案 0 :(得分:1)
使用Series.sub
从pd.Timestamp.now
中减去membership_date
列,该列返回包含timedelta
个对象的序列,最后使用Series.dt.days
获得整数表示两个日期之间经过的天数。
profile['membership_days'] = (
profile['membership_date'].sub(pd.Timestamp.now()).dt.days
)
结果:
# print(profile)
Date membership_days
0 2017-02-12 -1239
1 2017-07-15 -1086
2 2018-07-12 -724
3 2017-05-09 -1153
4 2017-08-04 -1066
5 2018-04-26 -801