python - 使用pandas python将索引与另一列的最高三个值分组
问题描述
我有一个 csv 文件,其中包含 StateName、Population、CityName 等列...请注意,对于每个州,您都可以有多个城市名称,因此同一个城市有多个人口
我想要的是将 StateName 与同一城市的三个最高人口分组。
我想要的(图片点击查看) 我的代码是:
def answer_six():
x=census_df['STNAME'].unique()
census_df2 = df = pd.DataFrame()
for a in x :
census_dfcopy = census_df.copy()
census_dfcopy = census_dfcopy.set_index(['STNAME'])
census_dfcopy = census_dfcopy.loc[a]
census_dfcopy = census_dfcopy.reset_index()
census_dfcopy = census_dfcopy.set_index(['CENSUS2010POP'])
census_dfcopy1=census_dfcopy.sort_index(ascending = False)
census_dfcopy1= census_dfcopy1.append(census_dfcopy1)
census_dfcopy1.groupby('STNAME')
return census_dfcopy1.head(3)
答案六()
我只得到最后一个状态的最后 3 个值。
要下载 csv 文件,请访问链接: https ://drive.google.com/open?id=1ptE6MRQ1NGrfRYBB7NKjqhOJZXlxScPo
解决方案
你可以做
census_df.groupby('STNAME').CENSUS2010POP.nlargest(3)
在行动:
In [51]: df
Out[51]:
ctyname pop stname
0 0 10 a
1 1 9 a
2 2 1 a
3 3 3 a
4 4 12 b
5 5 12 b
6 6 13 b
7 7 14 b
8 8 4 c
9 9 3 c
10 10 2 c
11 11 1 c
In [68]: df.groupby('stname').pop.nlargest(3)
Out[68]:
stname
a 0 10
1 9
3 3
b 7 14
6 13
4 12
c 8 4
9 3
10 2
推荐阅读
- excel - 从多个工作表复制数据表,省略 #N/A
- database - 关联表与数据表
- python - 运行程序时设计器预览不一样
- javascript - 我想在页面加载时显示模式对话框以及按钮切换,两者
- vb.net - AWS Textextract 使用 VB.Net
- react-native - android推送通知不起作用react-native
- html - 修复卡片内引导行的左右边距
- django - Django - 从处理的`ImageField`数据中设置模型的`CharField`主键
- azure-devops - Azure DevOps 管道任务 NetCoreCLI 包。AutoVersion 但保持 Major.Minor.Patch 不变
- discord.js - Discord.js 正常运行时间命令