重复索引次数的列

Column with # of times index is repeated

我有一个 pandas DataFrame,其中重复了一些行,因此它们具有相同的索引

示例:

        A
0.      34
1.      12 
1.      12 
2.      21
2.      21
2.      21

如何创建包含该索引重复次数的列“B”?

期望的输出:

        A.    B.
0.      34.   1
1.      12    1
1.      12    2
2.      21.   1
2.      21.   2
2.      21.   3

您可以创建一个 1 的虚拟列和 groupby 索引并在虚拟列上使用 cumsum:

df['B'] = df.assign(one=1).groupby(level=0)['one'].cumsum()

另一种选择是使用 groupby 索引并使用 cumcount(并加 1)得到 运行 计数:

df['B'] = df.groupby(level=0).cumcount()+1

输出:

      A  B
0.0  34  1
1.0  12  1
1.0  12  2
2.0  21  1
2.0  21  2
2.0  21  3