【发布时间】:2018-09-06 20:40:18
【问题描述】:
对于给定的数据框df
timestamps = [
datetime.datetime(2018, 1, 1, 10, 0, 0, 0), # person 1
datetime.datetime(2018, 1, 1, 10, 0, 0, 0), # person 2
datetime.datetime(2018, 1, 1, 11, 0, 0, 0), # person 2
datetime.datetime(2018, 1, 2, 11, 0, 0, 0), # person 2
datetime.datetime(2018, 1, 1, 10, 0, 0, 0), # person 3
datetime.datetime(2018, 1, 2, 11, 0, 0, 0), # person 3
datetime.datetime(2018, 1, 4, 10, 0, 0, 0), # person 3
datetime.datetime(2018, 1, 5, 12, 0, 0, 0) # person 3
]
df = pd.DataFrame({'person': [1, 2, 2, 2, 3, 3, 3, 3], 'timestamp': timestamps })
我想为每个人 (df.groupby('person')) 计算那个人的所有时间戳之间的时间差,我想用diff() 来计算。
df.groupby('person').timestamp.diff()
只是一半,因为返回到人的映射丢失了。
解决方案是什么样的?
【问题讨论】:
-
不,不是真正的重复。我错过了
diff需要transform的那一点。这就是我的问题的答案。 -
你有没有实际尝试过上面的dup?它工作正常..
-
是的,正如您在我的问题中看到的那样,我正是这样做的(使用
diff()),但这不是正确的解决方案。正如@jezreal 指出的那样,我错过了 diff 不会聚合值,但 transform 会。 -
我认为这是用户错误的情况。如果您完全按照帖子中的描述应用逻辑,它就可以工作。我知道,因为我检查过。我将在这里发布一个示例。
-
我很抱歉,确实是我的错误!很抱歉!
标签: python pandas datetime dataframe pandas-groupby