在一列上使用diff()并在另一列上检查条件的熊猫数据框

时间:2019-05-16 16:11:13

标签: python pandas dataframe

这是我的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

这很慢,因为该表具有超过几百万行。

0 个答案:

没有答案