校正Timedelta列上的熊猫累积和]]

问题描述 投票:1回答:2

我目前有一行代码,我正在使用这些代码来尝试创建一个基于日期之间timedelta数据的累积和的列。但是它在任何地方都无法正确执行“累积总和”,并且还警告我我的python代码行将来将无法正常工作。

原始数据集如下:

ID       CREATION_DATE             TIMEDIFF              EDITNUMB       
8211    11/26/2019 13:00                                    1        
8211    1/3/2020 9:11      37 days 20:11:09.000000000       1       
8211    2/3/2020 14:52     31 days 05:40:57.000000000       1       
8211    3/27/2020 15:00    53 days 00:07:49.000000000       1       
8211    4/29/2020 12:07    32 days 21:07:23.000000000       1

这是我的python代码行:

df['RECUR'] = df.groupby(['ID']).TIMEDIFF.apply(lambda x: x.shift().fillna(1).cumsum())

哪个会产生新列'RECUR',而该列不能从'TIMEDIFF'列中的数据中正确地进行累加:

ID       CREATION_DATE             TIMEDIFF              EDITNUMB          RECUR
8211    11/26/2019 13:00                                    1       0 days 00:00:01.000000000
8211    1/3/2020 9:11      37 days 20:11:09.000000000       1       0 days 00:00:02.000000000
8211    2/3/2020 14:52     31 days 05:40:57.000000000       1       37 days 20:11:11.000000000
8211    3/27/2020 15:00    53 days 00:07:49.000000000       1       69 days 01:52:08.000000000
8211    4/29/2020 12:07    32 days 21:07:23.000000000       1       122 days 01:59:57.000000000

还会产生此警告:

FutureWarning: Passing integers to fillna is deprecated, will raise a TypeError in a future version.  To retain the old behavior, pass pd.Timedelta(seconds=n) instead.

对此有任何帮助,从19/26/19开始,总计应为153天,并正确累计显示在'RECUR'栏中。

我目前有一行代码,我正在使用这些代码来尝试创建一个基于日期之间timedelta数据的累积和的列。但是如何无法正确执行累积和...

python pandas timedelta cumsum
2个回答
0
投票

IIUC,您可以做:


0
投票

您可以将fillna设置为0秒timedelta并执行cumsum

© www.soinside.com 2019 - 2024. All rights reserved.