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

如何将pandas日期列合并为存储唯一日期值的新列

实现方法

直接按行处理即可完成去重+拼接,逻辑简洁且不会打乱原有日期顺序,完整可运行代码如下:

import pandas as pd

# 示例数据初始化
data = [
    ["2018-12-08", "2018-12-09"],
    ["2020-12-19", "2020-12-20"],
    ["2020-12-19", "2020-12-19"],
    ["2020-10-06", "2020-10-12"],
]
df = pd.DataFrame(data, columns=["date1", "date2"])

# 第一步:统一转换两列为日期格式,注意要把转换结果赋值回原列
df[["date1", "date2"]] = df[["date1", "date2"]].apply(lambda x: pd.to_datetime(x).dt.date)

# 第二步:逐行判断,日期相同则保留单个值,不同则按原顺序拼接
df['date_range'] = df.apply(
    lambda row: str(row['date1']) if row['date1'] == row['date2'] else f"{row['date1']},{row['date2']}",
    axis=1
)

运行结果

执行代码后输出的df完全匹配预期效果:

date1       date2                 date_range
0  2018-12-08  2018-12-09  2018-12-08,2018-12-09
1  2020-12-19  2020-12-20  2020-12-19,2020-12-20
2  2020-12-19  2020-12-19                2020-12-19
3  2020-10-06  2020-10-12  2020-10-06,2020-10-12

扩展场景

如果后续需要处理2列以上的日期去重拼接、同时保留日期的原始出现顺序,可以用保序去重的写法,兼容所有Python3.7+版本:

# 多列通用写法,把要处理的列名放进cols列表即可
cols = ["date1", "date2"]
df['date_range'] = df[cols].apply(
    lambda row: ','.join(dict.fromkeys(row.astype(str))),
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:36:16