gpt4 book ai didi

python - 找到天数滞后并将 0 替换为最后一天的滞后 Pandas

转载 作者:行者123 更新时间:2023-12-04 15:09:08 25 4
gpt4 key购买 nike

我有一个包含 employee 、 worked_days 和 sold 列的 df有的员工第一天就卖了,五天后又卖了

我的数据是这样的

data = {'id':[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2], 
'days':[1, 3, 3, 8, 8,8, 3, 8, 8, 9, 9, 12],
'sold':[1, 0, 1, 1, 1, 0, 0, 1, 1, 2, 0, 1]}
df = pd.DataFrame(data)
df['days_lag'] = df.groupby('id')['days'].diff().fillna(0).astype('int16')

给我这个

    id  days  sold  days_lag
0 1 1 1 0
1 1 3 0 2
2 1 3 1 0
3 1 8 1 5
4 1 8 1 0
5 1 8 0 0
6 2 3 0 0
7 2 8 1 5
8 2 8 1 0
9 2 9 2 1
10 2 9 0 0
11 2 12 1 3

我希望结果如下所示

    id  days  sold  days_lag
0 1 1 1 0
1 1 3 0 2
2 1 3 1 2
3 1 8 1 5
4 1 8 1 5
5 1 8 0 5
6 2 3 0 0
7 2 8 1 5
8 2 8 1 5
9 2 9 2 1
10 2 9 0 1
11 2 12 1 3

我怎样才能做到这一点?谢谢

最佳答案

使用Groupby.transform :

In [92]: df['days_lag'] = df.groupby('id')['days'].diff().fillna(0).astype('int16')
In [96]: df['days_lag'] = df.groupby(['id', 'days'])['days_lag'].transform('max')

In [97]: df
Out[97]:
id days sold days_lag
0 1 1 1 0
1 1 3 0 2
2 1 3 1 2
3 1 8 1 5
4 1 8 1 5
5 1 8 0 5
6 2 3 0 0
7 2 8 1 5
8 2 8 1 5
9 2 9 2 1
10 2 9 0 1
11 2 12 1 3

关于python - 找到天数滞后并将 0 替换为最后一天的滞后 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65517384/

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