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

如何合并含字符串日期与None的列并实现单用户单行数据

合并用户的抵达/离开日期记录

问题背景

现有如下Pandas DataFrame,每个用户对应两行数据:每行包含arrival(抵达日期)和departure(离开日期)字段,其中必有一个字段值为None,日期为字符串格式。

原始数据表格

traveller_idarrivaldeparture
2828405607123112022-10-20None
282840560712311None2022-10-23
4398637391708842022-12-22None
439863739170884None2022-12-25

生成原始数据的代码

import pandas as pd
import numpy as np

df = pd.DataFrame(
    data={
        'traveller_id': [712311, 712311, 170884, 170884],
        'arrival': ['2022-10-20', None, '2022-12-22', None],
        'departure': [None, '2022-10-23', None, '2022-12-25']
    }
)

需求

将每个用户的记录合并为一行,填充arrival和departure字段的有效日期,确保最终结果无None值,目标结果如下:

目标数据表格

traveller_idarrivaldeparture
2828405607123112022-10-202022-10-23
4398637391708842022-12-222022-12-25

解决方案

可以通过按traveller_id分组后提取非空值的方式实现合并:

方法1:使用groupby + first

由于每个用户的每个字段仅存在一个非空值,first()会自动提取该有效日期:

result_df = df.groupby('traveller_id', as_index=False).first()

方法2:自定义聚合逻辑

如果需要更明确的处理规则,可通过agg指定每个字段的提取方式:

result_df = df.groupby('traveller_id', as_index=False).agg(
    arrival=('arrival', lambda x: x.dropna().iloc[0]),
    departure=('departure', lambda x: x.dropna().iloc[0])
)

运行上述代码后,result_df将呈现目标表格样式,每个用户仅保留一行,且所有日期字段均为有效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:35:24