You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas实现表格逐行排序并返回对应原列标签的新DataFrame方法

实现方法

直接用pandas就能快速实现,完整代码如下:

import pandas as pd

# 读取CSV,指定逗号为小数分隔符
df = pd.read_csv("your_file.csv", decimal=",")

# 逐行处理得到公司排名
def get_rank(row):
    # 排除日期列后按数值降序排序,返回对应的公司名
    return row.drop("Date").sort_values(ascending=False).index.tolist()

# 生成结果表
rank_cols = df.apply(get_rank, axis=1).to_list()
result = pd.concat([
    df["Date"],
    pd.DataFrame(rank_cols, columns=["1", "2", "3"])
], axis=1)

# 可选:导出结果到CSV
# result.to_csv("rank_result.csv", index=False)

关键逻辑说明

  • 读取文件时通过decimal=","参数直接适配你用逗号作为小数分隔符的数值格式,无需额外做格式转换。
  • 逐行处理时调用sort_values(ascending=False)做降序排序,排序后取索引值就是对应的公司列名,刚好匹配你要的排名规则。
  • 最后拼接原Date列和生成的排名列,就得到你要的结构,新列名1、2、3对应从高到低的排名。

如果你喜欢更精简的写法,也可以把行处理逻辑合并为lambda表达式:

import pandas as pd

df = pd.read_csv("your_file.csv", decimal=",")
result = df[["Date"]].join(
    df.drop("Date", axis=1)
      .apply(lambda x: x.sort_values(ascending=False).index, axis=1)
      .to_list(),
    lsuffix="", rsuffix=""
).set_axis(["Date", "1", "2", "3"], axis=1)

内容的提问来源于stack exchange,提问作者Martin Kunze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:02