【发布时间】:2021-07-01 05:05:11
【问题描述】:
当尝试计算数据框中具有相似“种类”的行时:
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'?
另外,如何按计数的降序对这个结果数据框进行排序?
【问题讨论】: