我有大约 200 万行...我找到了一堆获得总体平均时间的答案 - 但我试图获得每个用户每个时间戳的平均时间。也没有禁止状态必须 = 1。
UID timestamp Not_banned
3 2013-05-02 08:42:44 1
2 2013-05-02 14:05:57 1
2 2013-05-02 17:36:51 1
所以输出会是这样的
UID avg_btwn_txn
3 1.5
2 63.2
6 22.1
我尝试过:
df.groupby("UID")["时间戳"].mean()
...但是这段代码只是出错了。
“数据错误:没有要聚合的数字类型”
最佳答案
我认为你首先需要 boolean indexing
用于过滤,然后使用 here 中的自定义 lambda 函数进行 groupby
(timedeltas
已转换为 hours
,并且已删除反向转换为 timedelatas
):
df1 = df[df['Not_banned'] == 1]
.groupby('UID')
.Timestamp
.apply(lambda x: (x-x.min()).astype('m8[h]').mean())
.reset_index()
print (df1)
UID Timestamp
0 2 1.5
1 3 0.0
另一个解决方案 query
:
df1 = df.query("Not_banned == 1")
.groupby('UID').Timestamp
.apply(lambda x: (x-x.min()).astype('m8[h]').mean())
.reset_index()
关于python - panda 用户的交易或订单之间的平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42063670/