重复索引次数的列
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
我有一个 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