gpt4 book ai didi

python - 从前一行中减去一行,该行具有来自 DataFrame 中前一组的值

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

我在 Python 中有一个 Pandas DataFrame,如下所示:

   A   --  E    user
0 0 -- 0 1
1 12 -- 1 1
2 12 -- 1 1
3 13 -- 2 1
4 15 -- 3 1
5 15 -- 3 1
6 15 -- 3 1
7 19 -- 4 2
8 20 -- 5 2
9 25 -- 6 2
10 25 -- 6 2
我想从前一组/一组值中减去 1 行(即,它不应为 0)[groupby E] 为每个用户
我的意思是有一个 DataFrame 如下:
   A            --  E   user
0 0 -- 0 1
1 12 -- 1 1
2 12 -- 1 1
3 1(ie,13-12) -- 2 1
4 2 ( -- ) -- 3 1
5 2 -- 3 1
6 2 -- 3 1
7 19 -- 4 2 (should not change at user 2)
8 1 -- 5 2
9 5(ie,25-20) -- 6 2
10 5(ie,25-20) -- 6 2
你能帮我吗..谢谢

最佳答案

如果在 E列是唯一的组使用 DataFrameGroupBy.diff , 用 Series.fillna 替换原始值并使用 Series.where 对连续值使用掩码(与不相等的移位值进行比较),然后用 ffill 向前填充缺失值最后是整数:

df['A1'] = (df.groupby('user')['A'].diff()
.fillna(df['A'])
.where(df['E'].ne(df['E'].shift()))
.ffill()
.astype(int))
print (df)
A E user A1
0 0 0 1 0
1 12 1 1 12
2 12 1 1 12
3 13 2 1 1
4 15 3 1 2
5 15 3 1 2
6 15 3 1 2
7 19 4 2 19
8 20 5 2 1
9 25 6 2 5
10 25 6 2 5

关于python - 从前一行中减去一行,该行具有来自 DataFrame 中前一组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64260264/

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