2014-02-06 39 views
1

我想用我的前代码代码修改为Python,使用dataframe框架。 在SAS我经常使用这种类型的代码(假设列由GROUP_ID其中GROUP_ID取值为1到10,其中有每个GROUP_ID多次观测排序):Python - 熊猫:选择每个组的第一个观察者

data want;set have; 
by group_id; 
if first.group_id then c=1; else c=0; 
run; 

所以发生的事情在这里的是我选择每个ID的第一个观察值,然后创建一个新变量c,其值为10。该数据集是这样的:

group_id c 
1  1 
1  0 
1  0 
2  1 
2  0 
2  0 
3  1 
3  0 
3  0 

如何使用dataframe我做到这一点在Python?假设我只从group_id矢量开始。

回答

3

如果您使用0.13+可以使用cumcount GROUPBY方法:

In [11]: df 
Out[11]: 
    group_id 
0   1 
1   1 
2   1 
3   2 
4   2 
5   2 
6   3 
7   3 
8   3 

In [12]: df.groupby('group_id').cumcount() == 0 
Out[12]: 
0  True 
1 False 
2 False 
3  True 
4 False 
5 False 
6  True 
7 False 
8 False 
dtype: bool 

您可以强制D型为int而不是布尔:

In [13]: df['c'] = (df.groupby('group_id').cumcount() == 0).astype(int) 
+0

OK感谢应该工作..我必须安装0.13。 – Plug4

+0

没有0.13熊猫就可以做到这一点吗?我在安装0.13时感到非常困难...谢谢 – Plug4

+0

@CharlesM不那么容易。什么似乎是安装问题?你使用点或蟒蛇? –