我正在尝试将groupby对象中每个单独记录的索引(如果可以的话,也可以运行计数)放入一列中。我不必是groupby,但是顺序必须保持不变,因此,例如,我想按C列进行排序和重新编制索引:
df = pd.DataFrame([[1, 2, 'Foo'],
[1, 3, 'Foo'],
[4, 6,'Bar'],
[7,8,'Bar']],
columns=['A', 'B', 'C'])
Out[72]:
A B C
0 1 2 Foo
1 1 3 Foo
2 4 6 Bar
3 7 8 Bar
我想要的输出是:
Out[75]:
A B C sorted
0 1 2 Foo 1
1 1 3 Foo 2
2 4 6 Bar 1
3 7 8 Bar 2
这似乎应该很容易,但是我尝试过的所有事情都不会在没有遍历整个数据帧的情况下真正实现,这是我希望避免的。谢谢
答案 0 :(得分:1)
尝试使用cumcount
:
>>> df = pd.DataFrame([[1, 2, 'Foo'],
... [1, 3, 'Foo'],
... [4, 6,'Bar'],
... [7,8,'Bar']],
... columns=['A', 'B', 'C'])
>>> df["sorted"]=df.groupby("C").cumcount()+1
>>> df
A B C sorted
0 1 2 Foo 1
1 1 3 Foo 2
2 4 6 Bar 1
3 7 8 Bar 2