我有一个熊猫的数据框架,其中包括事件发生后的天数。我想创建一个新列,通过从当前日期中减去天数来计算事件的日期。每次尝试应用pd.offsets.Day
或pd.Timedelta
时,都会收到一个错误,指出序列是不受支持的类型。当我使用apply
时也会发生这种情况。当我使用map
时,我收到一个运行时错误,说“调用Python对象时超过了最大递归深度”。
例如,假设我的数据帧如下所示:
index days_since_event
0 5
1 7
2 3
3 6
4 0
我想创建一个新的列,列上事件的日期,所以我的预期结果(使用今天的日期12/29/2015)
index days_since_event event_date
0 5 2015-12-24
1 7 2015-12-22
2 3 2015-12-26
3 6 2015-12-23
4 0 2015-12-29
我尝试了多种方法来实现这一点,但每种方法都收到错误。
我试过的一种方法是:
now = pd.datetime.date(pd.datetime.now())
df['event_date'] = now - df.days_since_event.apply(pd.offsets.Day)
因此,我收到一个错误,说系列是不支持的类型。
我用.map
而不是.apply
尝试了上面的方法,并在调用Python对象“时收到了超过最大递归深度的错误。
我还尝试将日期转换为timedelta,例如:
df.days_since_event = (dt.timedelta(days = df.days_since_event)).apply
这还收到一个错误,引用的序列是不支持的类型。
首先,要将带整数的列转换为timedelta,可以使用
to_timedelta
:然后,可以使用当前日期创建一个新列,并将这些timedelta的值减去:
相关问题 更多 >
编程相关推荐