如何对DataFrame每行从col2开始按字母顺序排序?
问题:对DataFrame指定列按行排序
原始数据
| col1 | col2 | col3 |
|---|---|---|
| Josh | Mark | Andrew |
| Dave | Eric | Bill |
需求
对每行从col2开始的列按字母顺序从左到右排序,期望输出:
| col1 | col2 | col3 |
|---|---|---|
| Josh | Andrew | Mark |
| Dave | Bill | Eric |
错误尝试
尝试了以下代码,但会将第一列的姓名打乱到不同行中:
df[['col2', 'col3']] = pd.DataFrame(zip(*df[['col2', 'col3']].apply(sorted, axis=1).values)).T
解决方案
直接对目标列按行执行排序后,转为列表赋值即可,无需额外的zip和转置操作,这样能保证每行的排序结果与原行一一对应:
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ 'col1': ['Josh', 'Dave'], 'col2': ['Mark', 'Eric'], 'col3': ['Andrew', 'Bill'] }) # 对col2、col3按行排序并赋值 df[['col2', 'col3']] = df[['col2', 'col3']].apply(sorted, axis=1).tolist() # 输出结果 print(df)
代码说明
df[['col2', 'col3']].apply(sorted, axis=1)会对每行的col2和col3值进行字母排序,返回一个包含每行排序后列表的Series- 调用
.tolist()将Series转为二维列表,直接赋值给目标列即可保持行的对应关系,避免数据错位
内容的提问来源于stack exchange,提问作者baseballdude7711
相关产品推荐
相关产品推荐

