如何基于行值对Pandas DataFrame列进行排序?
解决方案
你可以用 pandas 内置的 sort_values 方法结合列操作实现,完全不需要自定义函数,步骤如下:
首先修正原 DataFrame 的构造代码(原代码中ECycle的取值缺少括号,会导致报错):
import pandas as pd df = pd.DataFrame({'Store':['A'],'Cycle':[1700],'ECycle':[2300],'Bike':[1900],'Scooter':[1900]})
方法一:分步实现
- 单独提取
Store列(保持其在第一位) - 对剩余列按第一行的数值进行排序(
axis=1指定按列排序,by=0指定用第一行的值作为排序依据) - 合并两部分得到结果
代码示例:
# 提取Store列 store_col = df[['Store']] # 对其他列按行值排序 sorted_cols = df.drop('Store', axis=1).sort_values(by=0, axis=1) # 合并列 result_df = pd.concat([store_col, sorted_cols], axis=1)
方法二:一行代码简化
直接将上述步骤合并,更简洁:
result_df = pd.concat([df[['Store']], df.drop('Store', axis=1).sort_values(by=0, axis=1)], axis=1)
执行后得到的结果会是Store列在首位,其余列按数值升序排列;对于数值相同的列(如Bike和Scooter),它们的顺序由 pandas 内部排序逻辑决定,两种排列方式均符合你的需求。
内容的提问来源于stack exchange,提问作者TMK
相关产品推荐
相关产品推荐

