首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能在一组熊猫中区分行呢?

我怎样才能在一组熊猫中区分行呢?
EN

Stack Overflow用户
提问于 2021-10-14 16:44:42
回答 2查看 45关注 0票数 0

我有这样的数据:

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({'group': [1, 1, 1, 2, 2, 3, 3, 3, 3], 'time': [12, 44, 55, 2, 7, 100, 105, 106, 200]})

#    group  time
# 0      1    12
# 1      1    44
# 2      1    55
# 3      2     2
# 4      2     7
# 5      3   100
# 6      3   105
# 7      3   106
# 8      3   200

我想得到这样的东西:

代码语言:javascript
复制
#    group  time diff_to_next_step
# 0      1    12  32     (44-12)
# 1      1    44  11     (55-44)
# 2      1    55  None
# 3      2     2  5      (7-2)
# 4      2     7  None
# 5      3   100  5      (105 - 100)
# 6      3   105  1      (106 - 105)
# 7      3   106  94     (200 - 106)
# 8      3   200  None

我认为这在某种程度上应该适用于组/堆栈/轮班,但我目前还不能让它发挥作用。有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-14 16:48:52

尝试使用shift

代码语言:javascript
复制
df['new'] = df.groupby('group')['time'].shift(-1) - df.time
票数 1
EN

Stack Overflow用户

发布于 2021-10-14 16:47:15

使用diff + shift

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({'group': [1, 1, 1, 2, 2, 3, 3, 3, 3], 'time': [12, 44, 55, 2, 7, 100, 105, 106, 200]})

df["diff"] = df.groupby("group").transform("diff").shift(-1)
print(df)

输出

代码语言:javascript
复制
   group  time  diff
0      1    12  32.0
1      1    44  11.0
2      1    55   NaN
3      2     2   5.0
4      2     7   NaN
5      3   100   5.0
6      3   105   1.0
7      3   106  94.0
8      3   200   NaN
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69574448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档