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

Python中如何按NIC分组对日期时间列进行升序排序

你可以直接在sort_values的by参数中传入多个排序列,不需要额外做分组操作,就能实现相同NIC聚为一组、组内按日期升序排列的效果,代码如下:

# 匹配你给出的预期输出:NIC数值大的组排在前面,组内日期升序
df_sorted = df.sort_values(
    by=["NICS", "Date and Time"],
    key=lambda col: pd.to_datetime(col) if col.name == "Date and Time" else col,
    ascending=[False, True]
)

如果你需要NIC数值小的组排在前面,把ascending的第一个值改为True即可。

补充说明

  1. 代码逻辑:by字段传入两个列名,会先按第一个列NICS排序,保证相同NIC的行全部聚合在一起,再在相同NIC的范围内按第二个列Date and Time排序。key参数做了列判断,只有处理日期列时才转换为datetime类型做时间排序,避免修改NIC列的数值排序逻辑。
  2. 低版本pandas兼容方案:如果你的pandas版本低于1.1.0不支持key参数,可以先转换日期列再排序:
# 先转日期列格式
df["Date and Time"] = pd.to_datetime(df["Date and Time"])
# 多列排序
df_sorted = df.sort_values(by=["NICS", "Date and Time"], ascending=[False, True])
# 如果需要保持原来的字符串日期格式,可以加下面这行
# df_sorted["Date and Time"] = df_sorted["Date and Time"].dt.strftime("%m/%d/%Y %I:%M:%S %p")

你之前的代码只指定了日期作为唯一排序列,所以是全表按日期统一排序,没有先按NIC做聚合,才会不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:01