如何在 Python 中访问聚合函数的值

Posted

技术标签:

【中文标题】如何在 Python 中访问聚合函数的值【英文标题】:How to access the values of aggregate functions in Python 【发布时间】:2016-04-28 11:56:32 【问题描述】:

我创建了一个数据框并分组和聚合时间戳,为每个分组提供最小值和最大值 生成的数据框如下所示 DF被定义为patient_id,timestamp 我按 Patient_id 对 DF 进行了分组 然后我想获得每个组的最小和最大时间戳 我这样做了

bypatient_date = pd.DataFrame(byencounter.agg('timestamp' : [np.min,np.max])).reset_index())

  patient_id  timestamp            
              amin        amax
0         19  3396-08-21  3396-08-25
1         99  2723-09-27  2727-03-17
2       3014  2580-12-02  2581-05-01
3      24581  3399-07-19  3401-04-13

我正在尝试找出每个患者 ID 的最小值和最大值之间的差异,但我在尝试访问时间戳 amin 和时间戳 amax 中的值时遇到问题 有没有办法在不循环但使用内置 pandas 或 numpy 的情况下做到这一点

【问题讨论】:

这些真的是 26 至 34 世纪 YYYY-MM-DD 的时间戳吗? 是的,它们距离保护数据太远了 【参考方案1】:

只需删除最外层的列索引,如 SO post 所示。然后 aminamax 可以作为它们自己的列访问,您可以从中获取差异:

bypatient_date = pd.DataFrame(byencounter.groupby('patient_id').\
                              agg('timestamp' : [np.min, np.max])).reset_index(drop=True)

bypatient_date.columns = bypatient_date.columns.droplevel(0)
bypatient_date['datediff'] = bypatient_date['amax'] - bypatient_date['amin']

【讨论】:

以上是关于如何在 Python 中访问聚合函数的值的主要内容,如果未能解决你的问题,请参考以下文章

Python 使用依赖于另一列的值的复杂函数聚合时间序列

如何在一个值之前的值上计算聚合函数 COUNT(DISTINCT)?

在 Python Pandas 中使用聚合函数时如何忽略值 0?

如何在火花聚合函数中实现scala类型安全

mysql 聚合函数相关问题

如何从大师班聚合一个函数 - Python