在Python中枚举分组变量

时间:2015-03-30 21:12:51

标签: python pandas grouping

我有一个使用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语句的组合,但到目前为止还没有成功。感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

如果我通过执行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