首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算大熊猫每组的数值差异

计算大熊猫每组的数值差异
EN

Stack Overflow用户
提问于 2015-01-27 19:48:13
回答 1查看 79关注 0票数 1

我的Dataframe有以下结构:

代码语言:javascript
复制
patient_id  |  timestamp  |  measurement
A           |  2014-10-10 |  5.7
A           |  2014-10-11 |  6.3
B           |  2014-10-11 |  6.1
B           |  2014-10-10 |  4.1

我想计算一个delta (差)之间的每一个测量的每一个病人。

结果应该是:

代码语言:javascript
复制
patient_id  |  timestamp  |  measurement  |    delta
A           |  2014-10-10 |  5.7          |     NaN
A           |  2014-10-11 |  6.3          |     0.6
B           |  2014-10-11 |  6.1          |     2.0
B           |  2014-10-10 |  4.1          |     NaN

怎么才能在熊猫身上做到最优雅呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-27 19:52:02

在“度量值”列上调用transform并传递方法diff,transform返回一系列与原始df对齐的索引:

代码语言:javascript
复制
In [4]:

df['delta'] = df.groupby('patient_id')['measurement'].transform(pd.Series.diff)
df
Out[4]:
  patient_id   timestamp  measurement  delta
0          A  2014-10-10          5.7    NaN
1          A  2014-10-11          6.3    0.6
2          B  2014-10-10          4.1    NaN
3          B  2014-10-11          6.1    2.0

编辑

如果您打算对transform的结果应用一些排序,那么首先对df进行排序:

代码语言:javascript
复制
In [10]:

df['delta'] = df.sort(columns=['patient_id', 'timestamp']).groupby('patient_id')['measurement'].transform(pd.Series.diff)
df
Out[10]:
  patient_id   timestamp  measurement  delta
0          A  2014-10-10          5.7    NaN
1          A  2014-10-11          6.3    0.6
2          B  2014-10-11          6.1    2.0
3          B  2014-10-10          4.1    NaN
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28178740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档