python - Python DataFrame 中 Timedelta 值的聚合

标签 python dataframe aggregate-functions timedelta

我有大 DataFrame (df),它看起来像:

  Acc_num date_diff
0   29  0:04:43
1   29  0:01:43
2   29  2:22:45
3   29  0:16:21
4   29  0:58:20
5   30  0:00:35
6   34  7:15:26
7   34  4:40:01
8   34  0:56:02
9   34  6:53:44
10  34  1:36:58
.....
Acc_num                    int64
date_diff        timedelta64[ns]
dtype: object

我需要计算每个帐号的“date_diff”均值(时间增量格式)。
df.date_diff.mean() 工作正常。但是当我接下来尝试时:
df.groupby('Acc_num').date_diff.mean() 它引发异常:

"DataError: No numeric types to aggregate"

我也尝试了 df.pivot_table() 方法,但没有实现任何目标。

有人可以帮我解决这个问题吗?提前致谢!

最佳答案

确实有奇怪的限制。但一个简单的解决方案是:

df.groupby('Acc_num').date_diff.agg(lambda g:g.sum()/g.count())

编辑:
如果您传递 numeric_only=False

,Pandas 实际上会尝试聚合非数字列
df.groupby('Acc_num').date_diff.mean(numeric_only=False)

关于python - Python DataFrame 中 Timedelta 值的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239742/

相关文章:

oracle11g - 如何使 CLOBAGG 函数对结果进行排序?

python - Django 中的长轮询

python - 为什么三元条件不能完美地用于字符串连接

python - 清洁 Pandas 列的最佳方法

r - 将字符串拆分为话语并将同一说话人的话语分配给数据帧中的列

mysql - 计算 SQL 中计数相对于类别的百分比

mysql - 有和在哪里

python - 如何使用python更新字典中字典的值

python - 无法将大小为 1 的数组 reshape 为形状 (48,48)

python - 如何在特定条件下从现有数据框创建新数据框 - python