这是我的previous question提出的另一个问题,因为我在使用所有ID循环时遇到性能问题:
给出df:
id date quantity
1 2015-01-01 100
1 2016-01-01 500
1 2016-01-05 300
2 2017-01-01 100
2 2018-01-01 500
2 2018-01-05 100
想要获得:
id date quantity days
1 2015-01-01 100 365
1 2016-01-01 500 4
1 2016-01-05 300 NaN
2 2017-01-01 100 365
2 2018-01-01 500 2
2 2018-01-03 100 NaN
其中天数列是相同ID下到下一个日期的天数。如果是ID的最后日期,则天数设置为NaN
我一直在
的所有ID上使用循环for id in ids:
dff = df[df['id'] == id]
dff['days'] = dff.date.diff().dropna().dt.days.values
这很慢,因为该表具有超过几百万行。