gpt4 book ai didi

python - 如何计算具有条件的连续 Pandas 数据帧行之间的天差

转载 作者:太空狗 更新时间:2023-10-29 22:15:24 27 4
gpt4 key购买 nike

我有一个像下面这样的 Pandas 数据框..

item_id        date
101 2016-01-05
101 2016-01-21
121 2016-01-08
121 2016-01-22
128 2016-01-19
128 2016-02-17
131 2016-01-11
131 2016-01-23
131 2016-01-24
131 2016-02-06
131 2016-02-07

我想计算日期列之间但相对于 item_id 列的天数差异。首先,我想使用 item_id 上的日期分组对数据框进行排序。它应该是这样的

item_id        date     
101 2016-01-05
101 2016-01-08
121 2016-01-21
121 2016-01-22
128 2016-01-17
128 2016-02-19
131 2016-01-11
131 2016-01-23
131 2016-01-24
131 2016-02-06
131 2016-02-07

然后我想再次根据 item_id 分组计算日期之间的差异所以输出应该如下所示

 item_id        date      day_difference 
101 2016-01-05 0
101 2016-01-08 3
121 2016-01-21 0
121 2016-01-22 1
128 2016-01-17 0
128 2016-02-19 2
131 2016-01-11 0
131 2016-01-23 12
131 2016-01-24 1
131 2016-02-06 13
131 2016-02-07 1

为了排序,我使用了这样的东西

df.groupby('item_id').apply(lambda x: new_df.sort('date'))

但是,没有成功。我可以通过以下方式计算连续行之间的差异

(df['date'] - df['date'].shift(1))

但不适用于与 item_id 分组

最佳答案

我认为你可以使用:

df['date'] = df.groupby('item_id')['date'].apply(lambda x: x.sort_values())

df['diff'] = df.groupby('item_id')['date'].diff() / np.timedelta64(1, 'D')
df['diff'] = df['diff'].fillna(0)
print df
item_id date diff
0 101 2016-01-05 0
1 101 2016-01-21 16
2 121 2016-01-08 0
3 121 2016-01-22 14
4 128 2016-01-19 0
5 128 2016-02-17 29
6 131 2016-01-11 0
7 131 2016-01-23 12
8 131 2016-01-24 1
9 131 2016-02-06 13
10 131 2016-02-07 1

关于python - 如何计算具有条件的连续 Pandas 数据帧行之间的天差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35534152/

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