以下是虚假数据:
df = pd.DataFrame({'email': ['u1','u1','u1','u2','u2','u2'],
'timestamp': [3, 1, 5, 11, 15, 9]})
我打算检索的是每组电子邮件中的时间差。因此,在对每个组中的时间戳进行排序之后,数据应该是:
u1 5
u1 3
u1 1
u2 15
u2 11
u2 9
其结果应该是:
u1 2 # 5-3
u1 2 # 3-1
u2 4 # 15-11
u2 2 # 11-9
有人能告诉我下一步该怎么做吗?非常感谢。
发布于 2016-07-24 12:05:21
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
要保留电子邮件栏:
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)
。
https://stackoverflow.com/questions/38551749
复制相似问题