gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:36:33 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com