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

如何提取DataFrame每行最早日期对应的列名?

提取DataFrame每行最早日期对应的列名(可实现)

完全可以实现,用pandas的内置方法就能快速完成,步骤如下:

  • 第一步:确保日期列是datetime类型
    如果你的DataFrame中日期列是字符串格式,先转换为datetime类型,否则无法正确比较日期大小:

    import pandas as pd
    # 假设你的日期列是col_a、col_b、col_c
    date_columns = ['col_a', 'col_b', 'col_c']
    df[date_columns] = pd.to_datetime(df[date_columns])
    
  • 第二步:提取每行最早日期的列名
    使用idxmin(axis=1)方法,它会返回每行中最小值(也就是最早日期)对应的列名,直接生成新列存储结果:

    df['earliest_date_column'] = df[date_columns].idxmin(axis=1)
    

示例演示

# 构造示例DataFrame
data = {
    'col_a': ['2023-05-01', '2023-06-10', '2023-07-01'],
    'col_b': ['2023-04-25', '2023-06-15', '2023-06-28'],
    'col_c': ['2023-05-05', '2023-06-05', '2023-07-05']
}
df = pd.DataFrame(data)

# 转换日期格式
date_columns = ['col_a', 'col_b', 'col_c']
df[date_columns] = pd.to_datetime(df[date_columns])

# 提取结果
df['earliest_date_column'] = df[date_columns].idxmin(axis=1)

print(df)

运行后输出结果:

col_a      col_b      col_c earliest_date_column
0 2023-05-01 2023-04-25 2023-05-05                col_b
1 2023-06-10 2023-06-15 2023-06-05                col_c
2 2023-07-01 2023-06-28 2023-07-05                col_b

特殊情况处理

如果存在缺失值(NaN),idxmin会自动忽略这些值,返回该行中有效日期里最早的列名。如果需要处理缺失值,可以先通过df[date_columns].fillna(pd.Timestamp.max)把空值替换为最晚日期,再调用idxmin,避免结果异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:48:09