pandas 1.2.5使用pivot_table时如何保留数据初始顺序
pandas 1.2.5版本pivot_table保留原始数据顺序方案
pivot_table 默认会对生成的行、列索引做升序排列,1.2.5版本未提供内置的顺序保留参数,无需提前获知索引字段的取值排列,按以下步骤操作即可对齐原始数据顺序:
- 第一步:用
pd.unique()提取作为透视行索引的字段在原始数据中的首次出现顺序,该方法会按数据实际出现的先后顺序返回去重值,不需要手动指定排序规则 - 第二步:正常执行pivot_table逻辑,完成后用提取到的原始顺序对结果调用
reindex()重排索引,即可得到和原始数据顺序一致的透视结果
代码示例
原始测试数据:
import pandas as pd data = pd.DataFrame(data={ 'x_values':[13.4, 13.08, 12.73], 'y_values': [1.54, 1.47, 1.46], 'experiment':['e', 'e', 'e']})
修正后的透视代码:
# 提取x_values原始出现顺序 original_x_order = pd.unique(data['x_values']) # 透视后按原始顺序重排行 pivot_result = pd.pivot_table( data, index='x_values', columns='experiment', values='y_values' ).reindex(original_x_order)
运行后得到的结果和原始数据行顺序完全一致:
experiment e x_values 13.40 1.54 13.08 1.47 12.73 1.46
补充说明
- 如果需要保留透视列的原始顺序,用相同逻辑提取列字段的
pd.unique()结果,传入reindex()的columns参数即可 - 该方案兼容所有pandas版本,不依赖高版本专属参数,适配无法升级pandas版本的生产环境
内容的提问来源于stack exchange,提问作者olivier dadoun
相关产品推荐
相关产品推荐

