对多级组的组内观察计数/分配组顺序?
Posted
技术标签:
【中文标题】对多级组的组内观察计数/分配组顺序?【英文标题】:Counting/assigning group order to observations within groups for multilevel groups? 【发布时间】:2016-11-08 00:08:02 【问题描述】:我正在进行时间序列分析我有一个数据集,其中至少包含两个索引变量(在本例中为 ID 和年份)。按 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】:我找到了解决此问题的方法。首先对您的级别变量进行排序
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']
如果您不先排序,则此答案无效。由于对 Pandas 相当缺乏经验,我花了一段时间才弄清楚这一点。它有效,但我很好奇是否有人有更简单的解决方案。
【讨论】:
以上是关于对多级组的组内观察计数/分配组顺序?的主要内容,如果未能解决你的问题,请参考以下文章