如何在 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 所示。然后 amin
和 amax
可以作为它们自己的列访问,您可以从中获取差异:
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 中访问聚合函数的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在一个值之前的值上计算聚合函数 COUNT(DISTINCT)?