【问题标题】:Aggregations for Timedelta values in the Python DataFramePython DataFrame 中 Timedelta 值的聚合
【发布时间】:2017-12-27 15:04:52
【问题描述】:

我有大的 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]
数据类型:对象

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

"DataError: 没有要聚合的数字类型"

我也尝试了df.pivot_table() 方法,但没有任何效果。

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

【问题讨论】:

    标签: python dataframe aggregate-functions timedelta


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 2021-04-14
      • 1970-01-01
      • 2021-04-06
      • 2021-04-06
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多