如何在Pandas DataFrame中按Hz值从低到高自动重排列列?
按Hz数值排序Pandas DataFrame列
这事儿处理起来很直观,核心就是提取列名里的数字值,基于这个数值来排序列就行。直接上代码和详细解释:
解决方案代码
import pandas as pd # 假设你的DataFrame变量名为df # 1. 按列名中的Hz数值大小排序列名 sorted_columns = sorted(df.columns, key=lambda col: int(col.replace('Hz', ''))) # 2. 用排序后的列名重新排列DataFrame df_sorted = df[sorted_columns]
步骤拆解
- 提取数值并排序:
sorted()函数的key参数是关键——我们用lambda表达式把每个列名里的Hz字符去掉,转成整数类型,这样排序时就会按照数值大小来,而不是字符串的字典序(避免出现100Hz排在10Hz前面的错误情况)。 - 重构有序DataFrame:用排序后的列名列表直接索引原DataFrame,就能得到列按Hz从低到高排列的新DataFrame,全程无需手动指定顺序。
效果验证
比如你的原列顺序是:['100Hz', '10Hz', '25Hz', '30Hz', '33Hz', '50Hz']
经过处理后列顺序会变成:['10Hz', '25Hz', '30Hz', '33Hz', '50Hz', '100Hz'],完全匹配你要的排序需求。
内容的提问来源于stack exchange,提问作者SD12
相关产品推荐
相关产品推荐

