Pandas中的连续组内枚举

时间:2014-04-01 23:21:02

标签: python pandas

说我有以下数据框:

          date         A         B         C         D
0   2014-03-20   -1.561714  0.979202 -0.454935 -0.629215
1   2014-03-20    0.390851  0.045697 -1.683257 -0.771027
2   2014-03-20    0.357208 -0.207104  1.949936 -0.752096
3   2014-03-21    0.920687 -2.168321  0.337211 -0.638050
4   2014-03-21   -1.242688  0.541613  0.888365 -1.777855
5   2014-03-21   -0.425210 -1.876906 -0.805386  1.213882
6   2014-03-21    0.166220 -0.153913 -0.156115  0.155276
7   2014-03-22   -0.606291  0.574996 -0.139612  0.896219
8   2014-03-22    1.397973 -1.533777  1.319217 -0.292872
9   2014-03-22   -0.570876 -0.029911  2.143281 -0.515672

我想添加一个枚举每个日期组中的行的列。

以上应该成为:

          date         A         B         C         D   date_indexer
0   2014-03-20 -1.561714  0.979202 -0.454935 -0.629215       0
1   2014-03-20  0.390851  0.045697 -1.683257 -0.771027       1
2   2014-03-20  0.357208 -0.207104  1.949936 -0.752096       2
3   2014-03-21  0.920687 -2.168321  0.337211 -0.638050       0
4   2014-03-21 -1.242688  0.541613  0.888365 -1.777855       1
5   2014-03-21 -0.425210 -1.876906 -0.805386  1.213882       2
6   2014-03-21  0.166220 -0.153913 -0.156115  0.155276       3
7   2014-03-22 -0.606291  0.574996 -0.139612  0.896219       0
8   2014-03-22  1.397973 -1.533777  1.319217 -0.292872       1
9   2014-03-22 -0.570876 -0.029911  2.143281 -0.515672       2

关于如何在熊猫中做到这一点的任何想法?

1 个答案:

答案 0 :(得分:4)

df['date_indexer'] = df.groupby('date').cumcount()

N.B。这是对熊猫的一个相对较新的补充(我认为是v0.12或0.13),所以如果你运行旧版本它将不起作用。