我想计算PANDAS数据帧中每个主题内的观察数量

时间:2014-11-14 15:33:19

标签: python loops pandas

我很擅长使用PANDAS和python。

我有一个包含多个主题的分层数据集,每个主题都有一些观察结果。总df约为五十万行。

我想计算观察数...

## toy problem

d = {'one' : Series(['a', 'a', 'a', 'b', 'b', 'b'], index = [0,1,2,3,4,5]),
     'two' : Series([1.1, 2.5, 3.3, 2.5, 3.3, 9.5], index = [0,1,2,3,4,5])}
df = DataFrame(d)

for i in df.one.unique():
    for j in range(0,len(df[df.one == i])):
        print j

所以我想将j分配给每一行的列。我没有问题计算j,但我无法弄清楚如何分配它。我已经尝试过使用非常慢的iloc,或写入列表,然后将其加入到df中,也非常慢(目前运行超过30分钟并计数......)。我知道python最适合矢量化问题,但我想不出这种情况的矢量解决方案。

最好的方法是什么?在R中它非常简单快捷。我目前正在迁移到Python& PANDAS期望它更快但这似乎不是这里的情况。

请问任何建议?

1 个答案:

答案 0 :(得分:2)

您可以使用GroupBy.cumcount method

In [14]: df['j'] = df.groupby('one').cumcount()

In [15]: df
Out[15]: 
  one  two  j
0   a  1.1  0
1   a  2.5  1
2   a  3.3  2
3   b  2.5  0
4   b  3.3  1
5   b  9.5  2
相关问题