如何对pandas dataframe列按列名前4个字符后的内容字母排序
你可以通过自定义排序规则,忽略列名前4个前缀字符后再排序调整列顺序,两种实现方法如下:
方法1:使用sort_index的key参数(适用于pandas 1.1.0及以上版本)
直接给sort_index传入规则函数即可:
# axis=1指定按列排序,key函数取每个列名第4位之后的内容作为排序依据 df_sorted = df.sort_index(axis=1, key=lambda col: col.str[4:])
方法2:手动生成排序列名(兼容所有pandas版本)
先对列名列表自定义排序,再直接用排序后的列名重构DataFrame:
# 对列名排序,规则为取每个列名第4位之后的内容比较 sorted_cols = sorted(df.columns, key=lambda x: x[4:]) # 按新顺序重排列 df_sorted = df[sorted_cols]
两种方法输出的结果均符合你的预期,列名截掉前4位后排序时,相同后缀的new_xxx和old_xxx会自动相邻排列,最终列顺序为new_col、old_col、new_elements、old_elements、new_val、old_val。
内容的提问来源于stack exchange,提问作者tkxgoogle
相关产品推荐
相关产品推荐

