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

如何在不丢失日期分组的前提下基于其他值对Pandas字段排序

问题原因

  1. 调用sort_by(['Model','Horse Power'])报KeyError,大概率是列名拼写和实际不符,请确认Horse Power的空格、大小写和你表中实际列名完全一致。
  2. 直接按Horse Power排序会打乱日期分组,是因为你没有把Date作为第一排序键,且Date列存在空值,空值排序时会被归为一类,无法正确区分原有日期分组。

解决方法

你需要先补全Date列的空值,再按规则排序,最后可按需还原合并单元格的展示效果:

如果你使用Polars(调用sort_by方法)

import polars as pl

# 1. 向前填充Date列空值,补全所有行的日期信息
# 2. 先按Date升序保留原有日期顺序,再按Horse Power降序实现分组内排序
# 3. 可选:将重复的Date值替换为空,还原你原本的展示格式
df = df.with_columns(
    pl.col("Date").forward_fill()
).sort(
    by=["Date", "Horse Power"],
    descending=[False, True]
).with_columns(
    pl.when(pl.col("Date") == pl.col("Date").shift(1))
    .then(pl.lit(""))
    .otherwise(pl.col("Date"))
    .alias("Date")
)

如果你使用Pandas

import pandas as pd

# 1. 向前填充Date列空值
df["Date"] = df["Date"].ffill()
# 2. 按Date升序、马力降序排序
df = df.sort_values(by=["Date", "Horse Power"], ascending=[True, False])
# 3. 可选:还原合并单元格展示效果
df.loc[df["Date"] == df["Date"].shift(1), "Date"] = ""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:45:01