我有一个巨大的市政图书馆目录数据集,包括书名,它所在的图书馆,图书馆的自治市镇以及借出的次数.
我想为每个社区找到最受欢迎的三本书.
理想情况下,我会得到这样的东西:
Borough Title Total_loans
A Book1 35615
A Book2 34895
A Book3 2548
B Book1 6541
B Book2 5425
Run Code Online (Sandbox Code Playgroud)
等等
这是我能够得到的最接近的,但结果数据框架没有按行政区划分,难以阅读.
import pandas as pd
df = pd.DataFrame({"borough":["A", "B", "B", "A", "A"], "title":["Book2", "Book1", "Book2", "Book2", "Book1"], "total_loans":[4, 48, 46, 78, 15]})
top_boroughs = df.groupby(['borough','title'])
top_boroughs.aggregate(sum).sort(['total_loans','title'], ascending=False)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
Foo*_*Bar 11
简而言之:
df.groupby(level=[0,1]).sum().reset_index().sort_values(['borough', 'total_loans'], ascending=[1,0]).groupby('borough').head(3)
Run Code Online (Sandbox Code Playgroud)
步骤:
3
先取得这两者都优于公认的答案
concat
,浪费内存我的输出(使用head(1)
自测试数据以来2
每组只有行数:
Out[484]:
borough title total_loans
1 A Book2 82
2 B Book1 48
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11424 次 |
最近记录: |