Pandas分组求均值后组内value降序排序异常问题排查
解决方案
1. 修正排序逻辑(解决排序不符合预期问题)
你的代码默认按升序排列value,要实现variable分组后组内value从大到小排序,需在sort_values中指定ascending参数:第一个值保证variable按顺序分组,第二个值设置为False实现组内降序:
# 修正后的排序代码 result = df.groupby(['variable','iso3c'])[['value']].mean().sort_values(['variable','value'], ascending=[True, False])
2. 关闭科学计数法显示
Pandas会自动对过大/过小的数值启用科学计数法,可通过两种方式调整:
- 全局设置(影响所有Pandas输出):
# 取消科学计数法,保留两位小数(可根据需求调整小数位数) pd.set_option('display.float_format', lambda x: '%.2f' % x)
- 仅格式化当前结果(不影响全局设置):
result = result.style.format({'value': '{:.2f}'})
完整示例代码
import pandas as pd # 读取数据集 df = pd.read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2022/2022-07-19/technology.csv') # 分组求均值+组内降序排序 grouped_result = df.groupby(['variable','iso3c'])[['value']].mean().sort_values(['variable','value'], ascending=[True, False]) # 关闭科学计数法显示 pd.set_option('display.float_format', lambda x: '%.2f' % x) # 查看结果 print(grouped_result)
内容的提问来源于stack exchange,提问作者user19890024
相关产品推荐
相关产品推荐

