gpt4 book ai didi

python - 根据列值 Pandas 对 group by 进行操作

转载 作者:行者123 更新时间:2023-11-28 21:03:40 25 4
gpt4 key购买 nike

我有一个分组的 Pandas 数据框

x   y   id  date        qty
6 3 932 2017-05-14 212
6 3 932 2017-05-15 212
6 3 932 2017-05-18 212
6 3 933 2016-10-03 518
6 3 933 2016-10-09 16
6 3 933 2016-10-15 28

我想知道如何获取特定 ID 的每个订单之间的天数。第一个日期应该是第 0 天,连续的列值是第一个订单之后的天数。像这样

x   y  id  date  qty
6 3 932 0 212
6 3 932 1 212
6 3 932 3 212
6 3 933 0 518
6 3 933 6 16
6 3 933 6 28

最佳答案

您可以 groupby通过 id 得到 diff , 将 NaT 替换为 fillna最后得到 days :

print (df)

x y id date qty
0 6 3 932 2017-05-14 212
1 6 3 932 2017-05-15 212
2 6 3 932 2017-05-18 212
3 6 3 933 2016-10-03 518
4 6 3 933 2016-10-09 16
5 6 3 933 2016-10-15 28

#if necessary convert to datetime
df['date'] = pd.to_datetime(df['date'])

df['date'] = df.groupby(['id'])['date'].diff().fillna(0).dt.days
print (df)

x y id date qty
0 6 3 932 0 212
1 6 3 932 1 212
2 6 3 932 3 212
3 6 3 933 0 518
4 6 3 933 6 16
5 6 3 933 6 28

Zero's solution非常相似,只是输出是 float 而不是 int,因为函数的顺序。

关于python - 根据列值 Pandas 对 group by 进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46293286/

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