枚举Python中的分组变量

DKA

我有一个使用Python的带有病人ID号的数据框,每个记录代表一个不同的约会。在每次约会中,一个特征(dx)都记录为0或1。我想创建一个新的特征,该特征将dx特征相加,但仅限于该患者。

patient_ID   |   dx   |   
 29847            0
 29847            1
 29847            0
 29847            1
 29847            1

我可以用一个简单的groupby语句来获得组的总和:

df.groupby(['patient_ID])['dx'].sum()

但我想将枚举值作为一项新功能,仅考虑当前和以前的记录:

patient_ID   |   dx   |   dx_enum
 29847            0         0
 29847            1         1
 29847            0         1
 29847            1         2
 29847            1         3

我想这将需要一个for循环和一个groupby语句的组合,但是到目前为止还没有成功。感谢您的任何帮助,您可以提供!

埃德Chum

如果我了解您的要求,则可以通过执行groupby然后调用transform并传递函数来添加列cumsum

In [44]:

df['dx_enum'] = df.groupby('patient_ID')['dx'].transform(pd.Series.cumsum)
df
Out[44]:
   patient_ID  dx  dx_enum
0       29847   0        0
1       29847   1        1
2       29847   0        1
3       29847   1        2
4       29847   1        3

Transform返回与原始df对齐的序列,因此您可以将其添加为列,请参阅文档:http : //pandas.pydata.org/pandas-docs/stable/groupby.html#transformation

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章