gpt4 book ai didi

python - 在 Pandas 中拆分、分组、组合以查找日期差异

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:31 26 4
gpt4 key购买 nike

我有一个简单的数据框,如下所示:

enter image description here

我想使用 groupby 按 id 分组,然后找到一些方法来区分日期,然后将它们绑定(bind)回数据框,所以我最终得到了这个:

enter image description here

groupby 很简单,

grouped = DF.groupby('id')

找到最早的日期很简单,

maxdates = grouped['date'].min()

但我不确定如何进行。如何应用日期减法运算,然后合并?

有个类似的问题here .

感谢您阅读到这里。

我的数据框是:

dates=pd.to_datetime(['2015-01-01', '2015-02-01', '2015-03-01', '2015-04-01', '2015-05-01', '2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-05'])

DF = DataFrame({'id':[1,1,1,1,1,2,2,2,2,2], 'date':dates})
cols = ['id', 'date']
DF=DF[cols]

编辑:下面的两个答案都很棒。我希望我能接受他们两个。

最佳答案

你可以像这样使用:

earliest_by_id = DF.groupby('id')['date'].min()
def since_earliest(row):
return row.date - earliest_by_id[row.id]

DF['days_since_earliest'] = DF.apply(since_earliest, axis=1)
print(DF)

   id       date  days_since_earliest
0 1 2015-01-01 0 days
1 1 2015-02-01 31 days
2 1 2015-03-01 59 days
3 1 2015-04-01 90 days
4 1 2015-05-01 120 days
5 2 2015-01-01 0 days
6 2 2015-01-02 1 days
7 2 2015-01-03 2 days
8 2 2015-01-04 3 days
9 2 2015-01-05 4 days

编辑:

DF['days_since_earliest'] = DF.apply(since_earliest, axis=1).astype('timedelta64[D]')
print(DF)

id date days_since_earliest
0 1 2015-01-01 0
1 1 2015-02-01 31
2 1 2015-03-01 59
3 1 2015-04-01 90
4 1 2015-05-01 120
5 2 2015-01-01 0
6 2 2015-01-02 1
7 2 2015-01-03 2
8 2 2015-01-04 3
9 2 2015-01-05 4

关于python - 在 Pandas 中拆分、分组、组合以查找日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com