如何在pandas中对含重复值的列排序,实现分组重复排列Temp值
问题解决方法
你的核心问题是排序优先级设置错误,原来的逻辑会跨name_1/name_2组混合排列不同组的行,只需要调整排序键的顺序即可实现需求:
实现代码
# 方式1:按原始索引保证组顺序,再按x1、Temp排序(适配你给出的示例数据结构) df_sorted = df.sort_values(by=[df.index, 'x1', 'Temp']) # 方式2:如果需要严格按name分组排序,不依赖原始索引,可使用如下代码 df_sorted = df.sort_values(by=['name_1', 'name_2', 'x1', 'Temp']) # 补充:如果存在x1相同但x2不同的场景,可把x2加入排序键 # df_sorted = df.sort_values(by=[df.index, 'x1', 'x2', 'Temp'])
逻辑说明
- 第一排序优先级为组标识(原始索引或
name_1+name_2组合),保证相同名称组的所有行排在一块,不会跨组混合 - 第二排序优先级为
x1,保证相同x1(对应相同x2,你示例中x1+x2=1)的行排在一块 - 第三排序优先级为
Temp,相同x1下按温度升序排列,刚好匹配你需要的温度重复排列效果
内容的提问来源于stack exchange,提问作者user16470918
相关产品推荐
相关产品推荐

