Pandas ,按计数分组并将计数添加到原始数据框?

标签 pandas dataframe

当尝试对数据框中具有相似“种类”的行进行计数时:

import pandas as pd

items = [('aaa','aaa text 1'), ('aaa','aaa text 2'), ('aaa','aaa text 3'),
         ('bb', 'bb text 1'), ('bb', 'bb text 2'), ('bb', 'bb text 3'), 
         ('bb', 'bb text 4'),
         ('cccc','cccc text 1'), ('cccc','cccc text 2'),
         ('dd', 'dd text 1'),
         ('e', 'e text 1'),
         ('fff', 'fff text 1'),
        ]

df = pd.DataFrame(items, columns=['kind', 'msg'])
df

    kind    msg
0   aaa     aaa text 1
1   aaa     aaa text 2
2   aaa     aaa text 3
3   bb      bb text 1
4   bb      bb text 2
5   bb      bb text 3
6   bb      bb text 4
7   cccc    cccc text 1
8   cccc    cccc text 2
9   dd      dd text 1
10  e       e text 1
11  fff     fff text 1

此代码有效:
df = df[['kind']].groupby(['kind'])['kind'] \
                         .count() \
                         .reset_index(name='count') \
                         .sort_values(['count'], ascending=False) \
                         .head(5)

df

导致:
    kind      count
    0   aaa   1
    1   bb    1
    2   cccc  1
    3   dd    1
    4   e     1

但是,如何才能像原始一加“计数”一列那样获得一个包含所有列的数据框?因此,结果应按此顺序具有列“kind”,“msg”,“count”?

另外,如何按计数的降序对该结果数据帧进行排序?

最佳答案

联合会

In [247]: df['count'] = df.groupby('kind').transform('count')

In [248]: df
Out[248]:
    kind          msg  count
0    aaa   aaa text 1      3
1    aaa   aaa text 2      3
2    aaa   aaa text 3      3
3     bb    bb text 1      4
4     bb    bb text 2      4
5     bb    bb text 3      4
6     bb    bb text 4      4
7   cccc  cccc text 1      2
8   cccc  cccc text 2      2
9     dd    dd text 1      1
10     e     e text 1      1
11   fff   fff text 1      1

排序:
In [249]: df.sort_values('count', ascending=False)
Out[249]:
    kind          msg  count
3     bb    bb text 1      4
4     bb    bb text 2      4
5     bb    bb text 3      4
6     bb    bb text 4      4
0    aaa   aaa text 1      3
1    aaa   aaa text 2      3
2    aaa   aaa text 3      3
7   cccc  cccc text 1      2
8   cccc  cccc text 2      2
9     dd    dd text 1      1
10     e     e text 1      1
11   fff   fff text 1      1

关于 Pandas ,按计数分组并将计数添加到原始数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45346986/

相关文章:

python - 在 Python Pandas 数据框中拆分列

python - 如何使用变量值来调用数据框?

r - data.frame 和 matrix 对象的不同子集方法之间的时间差

python 按周或按月拆分 pandas 数据框,并根据这些 sp 对数据进行分组

python - 将线型映射到python中具有多个子图的绘图图中的数据

python - 如何遍历各种训练和测试拆分

python - 在比较日期时间的同时从另一个数据框中填充值

python - python 中将列转换为行

python - “DataFrame”对象不可调用 : datetime

r - 在 ggplot2 中更改 x 轴刻度