python - 对保持多个索引匹配的熊猫数据透视表进行排序
问题描述
是否可以对数据框进行排序以保持索引之间的匹配?
我的df:
budget population
state fu
acre ac1 600 50
ac2 25 110
bahia ba1 2300 80
ba2 1 10
paulo sp1 1000 100
sp2 1000 230
我想得到下面的输出,因为索引 bahia 的总预算更高:
budget population
state fu
bahia ba1 2300 80
ba2 1 10
paulo sp1 1000 100
sp2 1000 230
acre ac1 600 50
ac2 25 110
但是在使用 sort_values() 之后,我得到以下输出:
budget population
state fu
bahia ba1 2300 80
paulo sp1 1000 100
sp2 1000 230
acre ac1 600 50
ac2 25 110
bahia ba2 1 10
我更新了问题以提供更多背景信息
解决方案
这是一种无需计算总预算即可进行排序的方法。IIUC,即使某些州的总预算比其他州大,但fu
预算较小,这应该会返回您需要的东西。
首先,我们budget
按州分组。
第二,计算max
预算。
第三,按降序对这些值进行排序。
第四,取index
这个新Series
的state
名字。
最后,我们原来reindex
的适当的新订单。level
df
new_index = df["budget"]\
.groupby("state")\
.max()\
.sort_values(ascending=False)\
.index # just return the index
df.reindex(new_index, level=0)
输出:
budget population
state fu
bahia ba1 2300 80
ba2 1 10
paulo sp1 1000 100
sp2 1000 230
acre ac1 600 50
ac2 25 110
推荐阅读
- amazon-ec2 - 禁止 ec2 ssh 密钥对登录,但允许使用特殊的 ssh 密钥登录
- java - 当我在单击某些按钮时调用相同的对话框方法时,如何处理对话框的 UI
- c# - 使用 Google Speech to Text API 从 Web 应用程序中的麦克风捕获实时音频
- c++ - C ++中的硒?
- python - (TypeError: cannot unpack non-iterable int object) for inversion counter使用归并排序
- python - 有没有办法在 discord.py 中一次获得多个命令的剩余冷却时间?
- javascript - 在 aem 中获取其他组件的值
- java - 可运行 Jar 文件未检测到 TestNG 类路径
- java - 如何向 ConnectableFlowable 发送取消信号?
- python - Python:快速迭代 Pandas DataFrame 列的方法,但需要在单元格内再次循环遍历数组