如何合并DataFrame多列日期,保留ID列、NA值并取每行最新非空日期
多日期列合并解决方案
核心思路
利用pandas日期列的最大值计算逻辑,自动跳过空值取每行最新日期,全空行自动保留空值,无需额外写判断逻辑处理不同行的空值分布差异。
操作步骤
- 第一步:将待合并的所有日期列统一转换为datetime格式,避免字符串形式的日期比较出错
- 第二步:沿行方向计算待合并列的最大值,得到合并后的最新日期列
- 第三步:按需保留ID列和新生成的合并日期列即可
代码实现
import pandas as pd # 替换为你实际要合并的日期列名,有更多日期列直接追加到列表即可 date_cols = ["timestamp", "timestamp_c"] # 批量转换日期格式,无效/空值会自动转为NaT df[date_cols] = df[date_cols].apply(pd.to_datetime, errors="coerce") # 合并日期:自动跳过空值取最新日期,所有日期列都为空的行返回NaT df["merged_latest_date"] = df[date_cols].max(axis=1, skipna=True) # 保留ID列和合并后的日期列,可自行调整保留的字段 final_df = df[["id", "merged_latest_date"]]
效果说明
- 仅
timestamp有值的行:合并结果取timestamp的值 - 仅
timestamp_c有值的行:合并结果取timestamp_c的值 - 两列都有值的行:合并结果取两个日期中更新的那个
- 两列都为空的行:合并结果保留空值,完全符合需求
参考数据样例

内容的提问来源于stack exchange,提问作者Meli
相关产品推荐
相关产品推荐

