对多级组中的组内观察计数/分配组顺序?

时间:2016-07-06 02:29:36

标签: python pandas group-by time-series

我正在进行时间序列分析我有一个包含至少两个索引变量的数据集(在本例中为ID和Year)。按ID和年份排序后:

ID  Year Grade 
1   1990  89
1   1991  76
1   1991  29
2   2001  99
2   2001  46
2   2001  69
2   2003  95

我想按这些变量进行分组,并将第一组中第二级组的出现顺序分配给每个观察。换句话说,我想生成"期间"变量如下:

ID  Year Grade period 
1   1990 89     1 
1   1991 76     2
1   1991 29     2
2   2001 99     1
2   2001 46     1
2   2001 69     1
2   2003 95     2

1 个答案:

答案 0 :(得分:2)

我找到了一个关于此问题的方法。首先对您的关卡变量进行排序

full_data = full_data.sort_values(by=['ID','Year'],ascending = [True, True])

创建一个二进制变量,指示每个2级组中的第一个观察值

full_data['temp'] = (full_data.groupby(['ID','Year']).cumcount() == 0).astype(int)

然后计算每个第一级组中该变量的累积和。

full_data['period'] = full_data.groupby(['ID']).cumsum()['temp']

如果您不先排序,则此答案无效。由于对熊猫缺乏经验,我花了一段时间来解决这个问题。它有效,但我很好奇,如果有人有一个更简单的解决方案。