猿问

groupby操作中的熊猫索引

我正在尝试将 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

看起来这应该很容易,但是如果不循环遍历整个数据框,我尝试过的任何事情都没有真正接近,我希望避免这种情况。谢谢


繁华开满天机
浏览 75回答 1
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  sorted0  1  2  Foo       11  1  3  Foo       22  4  6  Bar       13  7  8  Bar       2
随时随地看视频慕课网APP

相关分类

Python
我要回答