python - panda 用户的交易或订单之间的平均时间

标签 python pandas dataframe timestamp

我有大约 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/

相关文章:

Python 检查和函数

python - 向后求和给定天数范围内的值差异 - Pandas

python - 计算具有特定值的一行之后的两行

r - 按row.name和column合并

python - Pandas 值(value)错误: invalid literal for int() with base 10: ''

python - 检索 Neomodel 中的关系对象

python - 如何在 python 中安全地存储 LWPCookieJar 对象?

python - Pandas 数据框中的 FutureWarning

python - 用python读取复杂的html表

python - Pandas 使用第一个可用值的拆分填充 nan 值