我创建了一个数据框,并将分组和聚合的时间戳设置为每个分组的最小值和最大值 结果数据框看起来像这样 DF被定义为patient_id,时间戳 我通过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
我正在尝试找出每个patient_id的最小值和最大值之间的差异,但我在尝试访问时间戳amin和timestamp amax中的值时遇到问题 有没有办法在没有循环但是使用内置pandas或numpy
的情况下执行此操作答案 0 :(得分:2)
只需删除列索引的最外层,如此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']