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

如何从多事件字符串中提取指定事件日期并拆分到不同列?

Pandas提取不定顺序事件对应日期的解决方案

核心思路

由于事件顺序不固定、数量可变,无法依赖固定索引拆分,需通过匹配事件标识的方式提取对应日期,步骤如下:

1. 构造示例数据

先模拟用户的原始DataFrame:

import pandas as pd

data = {
    'id': [1, 2, 3],
    'event': [
        'rec:2023-05-10, call:2023-05-11, visit:2023-05-12',
        'visit:2023-06-01, rec:2023-06-02',
        'call:2023-07-01, visit:2023-07-02'
    ]
}
df = pd.DataFrame(data)

2. 编写日期提取函数

定义函数处理单个事件字符串,匹配目标事件并提取日期:

def extract_event_date(event_str, target_event):
    # 统一处理逗号/空格分隔符,拆分事件列表
    events = event_str.replace(',', '').split()
    for event in events:
        if event.startswith(f'{target_event}:'):
            return event.split(':')[1]
    # 无匹配事件时返回空值
    return pd.NA

3. 生成目标列

将函数应用到event列,分别提取rec和visit对应的日期:

df['rec_date'] = df['event'].apply(lambda x: extract_event_date(x, 'rec'))
df['visit_date'] = df['event'].apply(lambda x: extract_event_date(x, 'visit'))

4. 整理结果

保留需要的列(可按需移除原event列):

result_df = df[['id', 'rec_date', 'visit_date']]
print(result_df)

输出结果

id    rec_date  visit_date
0   1  2023-05-10  2023-05-12
1   2  2023-06-02  2023-06-01
2   3        <NA>  2023-07-02

进阶优化(处理复杂分隔符)

如果事件间存在多个空格或混合分隔符,改用正则表达式拆分更稳健:

import re

def extract_event_date(event_str, target_event):
    events = re.split(r'[, ]+', event_str.strip())
    for event in events:
        if event.startswith(f'{target_event}:'):
            return event.split(':')[1]
    return pd.NA

内容的提问来源于stack exchange,提问作者A. P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:05:28