首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Python在Pandas上对每个组进行时间差

如何用Python在Pandas上对每个组进行时间差
EN

Stack Overflow用户
提问于 2016-07-24 11:58:28
回答 1查看 103关注 0票数 0

以下是虚假数据:

代码语言:javascript
运行
复制
df = pd.DataFrame({'email': ['u1','u1','u1','u2','u2','u2'],
              'timestamp': [3, 1, 5, 11, 15, 9]})

我打算检索的是每组电子邮件中的时间差。因此,在对每个组中的时间戳进行排序之后,数据应该是:

代码语言:javascript
运行
复制
u1  5
u1  3
u1  1
u2  15
u2  11
u2  9

其结果应该是:

代码语言:javascript
运行
复制
u1  2  # 5-3
u1  2  # 3-1
u2  4  # 15-11
u2  2  # 11-9

有人能告诉我下一步该怎么做吗?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-24 12:05:21

代码语言:javascript
运行
复制
df = pd.DataFrame({'email': ['u1','u1','u1','u2','u2','u2'],
                   'timestamp': [3, 1, 5, 11, 15, 9]})

(df.sort_values(['email', 'timestamp'], ascending=[True, False])
 .groupby('email')['timestamp']
 .diff(-1)
 .dropna())
Out: 
2    2.0
0    2.0
4    4.0
3    2.0
Name: timestamp, dtype: float64

要保留电子邮件栏:

代码语言:javascript
运行
复制
df.sort_values(['email', 'timestamp'], ascending=[True, False], inplace=True)
df.assign(diff=df.groupby('email')['timestamp'].diff(-1)).dropna()
Out: 
  email  timestamp  diff
2    u1          5   2.0
0    u1          3   2.0
4    u2         15   4.0
3    u2         11   2.0

如果不需要时间戳列,可以在末尾添加.drop('timestamp', axis=1)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38551749

复制
相关文章

相似问题

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