【问题标题】:Pandas index in groupby operation [duplicate]groupby操作中的熊猫索引[重复]
【发布时间】:2019-10-04 17:06:05
【问题描述】:

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

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

【问题讨论】:

  • df.groupby('C').cumcount().add(1)?

标签: python pandas


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 2020-10-12
    • 2019-04-07
    • 2020-06-30
    • 2017-03-22
    • 2013-06-03
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多