如何用Python将DataFrame中的字符拆分至独立列并提取日期
提取指定列前6位数字并转换为日期格式(Pandas实现)
需求说明
从数据集的指定列中提取字符后的前6位数字(例如220519转换为2022/05/19),将结果存入新列,最终生成目标DataFrame。
分步实现代码
假设你的数据集已存入Pandas的df对象,目标列名为target_col:
1. 提取前6位数字
通过正则匹配提取目标列中的连续6位数字,生成临时列:
import pandas as pd # 提取连续6位数字,生成临时列 df['temp_date'] = df['target_col'].str.extract(r'(\d{6})')
2. 转换为指定日期格式
将提取到的数字字符串解析为日期,再转换为YYYY/MM/DD格式的字符串:
# 解析日期并调整显示格式 df['日期'] = pd.to_datetime(df['temp_date'], format='%y%m%d').dt.strftime('%Y/%m/%d')
3. 清理临时列(可选)
如果不需要保留临时列,可直接删除:
df.drop('temp_date', axis=1, inplace=True)
效果示例
原示例数据集:
| target_col | 其他列 |
|---|---|
| ABC220519XYZ | 数据1 |
| DEF230105LMN | 数据2 |
处理后输出的DataFrame:
| target_col | 其他列 | 日期 |
|---|---|---|
| ABC220519XYZ | 数据1 | 2022/05/19 |
| DEF230105LMN | 数据2 | 2023/01/05 |
注意点
- 若目标列存在无连续6位数字的行,
str.extract会在对应位置生成NaN,可根据实际需求用df['日期'].fillna('无有效日期', inplace=True)这类语句处理空值。 - 如果提取的6位数字不是
年份后两位+月份+日期的格式,需修改pd.to_datetime中的format参数匹配实际格式。
内容的提问来源于stack exchange,提问作者Mj___3
相关产品推荐
相关产品推荐

