在Python中枚举分组变量

在Python中枚举分组变量,python,pandas,grouping,Python,Pandas,Grouping,我有一个使用Python的数据框,其中包含患者ID号,每条记录代表不同的预约。在每次预约时,功能(dx)记录为0或1。我想创建一个新功能,总结dx功能,但仅限于该患者的这一点 patient_ID | dx | 29847 0 29847 1 29847 0 29847 1 29847 1 我可以通过一个简单的groupby语句获得组的总和: df.grou

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

如果我了解您的意图,您可以通过执行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

返回与原始df对齐的序列,以便您可以将其添加为列,请参阅文档:

我们如何确定OP不只是查找
cumsum
?[我的意思是
df.groupby(“patient_id”)[“dx”].cumsum()
]@DSM dunno但这符合OP的期望,值得询问更多信息我同意我认为OP首先需要groupby,请参阅我编辑的评论。谢谢您的帮助,@EdChum!这正是我要找的。你只需要
cumsum()