尝试在数据框中计算具有相似“kind”的行时:
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
然而,如何获取一个包含原始数据框中所有列以及“count”列的数据框?因此结果应该按照“kind”、“msg”、“count”的顺序具有这三列。
另外,如何将结果数据框按计数降序排序?