从DataFrame文本列提取指定格式日期时间至独立新列
从DataFrame文本列提取指定格式日期时间并拆分为多列
解决方案
利用Pandas结合正则表达式,可高效提取目标格式的日期时间并转为单独列,步骤如下:
- 构造示例数据(已有DataFrame可跳过)
import pandas as pd data = { 'ID': [1, 2], 'RESULT': [ 'Patients Discharged Home : 12/07/2022 11:19 Bob Melciv Appt 12/07/2022 12:19 Medicaid...', 'Stawword Geraldio - 12/17/2022 11:00 Bob Melciv Appt 12/10/2022 12:09 Risk Factors...' ] } df = pd.DataFrame(data)
- 提取日期时间并生成多列
# 匹配MM/DD/YYYY HH:MM格式的正则表达式 time_pattern = r'\b\d{2}/\d{2}/\d{4} \d{2}:\d{2}\b' # 提取每行所有符合格式的日期时间,转为DataFrame time_cols = df['RESULT'].str.findall(time_pattern).apply(pd.Series) # 重命名列名为DATE_TIME_1、DATE_TIME_2... time_cols.columns = [f'DATE_TIME_{idx+1}' for idx in time_cols.columns] # 合并原ID列与提取出的时间列 final_df = pd.concat([df['ID'], time_cols], axis=1)
- 输出结果
执行print(final_df)将得到:
ID DATE_TIME_1 DATE_TIME_2 0 1 12/07/2022 11:19 12/07/2022 12:19 1 2 12/17/2022 11:00 12/10/2022 12:09
关键说明
- 正则中的
\b是单词边界,确保只提取完整的日期时间字符串,避免误匹配片段内容。 str.findall会抓取每行所有符合规则的结果,apply(pd.Series)自动将列表转为多列,若某行日期时间数量不同,不足的列会填充NaN。
内容的提问来源于stack exchange,提问作者Raven
相关产品推荐
相关产品推荐

