如何更新 pandas DataFrame 上列标题的值?

问题描述 投票:0回答:1

我在以显示当年发生的所有会议的方式对标题进行排序时遇到问题,而不是继续到下一年(M 是会议):

给定数据框:

Meeting     M1/2023  M1/2024  M1/2025  M1/2026  M2/2023  M2/2024  M2/2025  M2/2026  M3/2023  M3/2024 (...)
Date                                                                        
2023-01-02    13.75  11.7500      NaN      NaN    13.75  11.2500      NaN   NaN    13.75     10.9375 (...)
2023-01-03    13.75  11.7500      NaN      NaN    13.75  11.2500      NaN   NaN    13.75     10.8750 (...)
2023-01-04    13.75  11.8125      NaN      NaN    13.75  11.4375      NaN   NaN    13.75     11.0000 (...)
2023-01-05    13.75  11.7500      NaN      NaN    13.75  11.3750      NaN   NaN    13.75     11.0000 (...)

What the order should be:
M1/2023  M2/2023  M3/2023  M4/2023  M1/2024  M2/2024  M3/2024   M4/2024  M1/2025  M2/2025 (...)
Date
(...)

起初我尝试使用 df.sort_values() 重新排序,但结果是一样的。我的下一步是将标题作为字符串获取,以便我可以编辑数据并在会议号前面添加年份,这样 sort_valeus() 就可以工作:

headers_dict = {}

for i in df.columns:
    headers_dict[i] = i.split('/')[1]+'_'+i.split('/')[0]

输出:

{'M1/2023': '2023_M1',
 'M1/2024': '2024_M1',
 'M1/2025': '2025_M1',
 'M1/2026': '2026_M1',
 'M2/2023': '2023_M2',
 'M2/2024': '2024_M2',
 'M2/2025': '2025_M2', (...)}

这部分有效,但我无法将编辑后的字符串放回 df (我尝试在此处使用 .reindex() )而不将所有数据转换为 NaN 。我应该怎么办?有没有办法做到这一点?抱歉我的英语不好。

python pandas sorting reindex columnheader
1个回答
0
投票

只需执行以下操作

cols = df.columns.tolist()
new_cols = ... #rearrange columns as you wish

df = df[new_cols]

最后一行对数据框中的列重新排序

© www.soinside.com 2019 - 2024. All rights reserved.