我正在进行时间序列分析我有一个包含至少两个索引变量的数据集(在本例中为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
答案 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']
如果您不先排序,则此答案无效。由于对熊猫缺乏经验,我花了一段时间来解决这个问题。它有效,但我很好奇,如果有人有一个更简单的解决方案。