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

如何将Pandas DataFrame中符合正则的字符串值转换为整数?

解决方案

可以通过pd.Series.apply配合匿名函数实现一行代码完成需求,逻辑清晰且能精准处理混合类型的列:

import numpy as np
import pandas as pd
import re

testdf = pd.DataFrame({'col1':['abc','2023',456,789,'2021',4.5,'123',np.nan]})

# 核心一行代码
testdf['col1'] = testdf['col1'].apply(lambda x: int(x) if isinstance(x, str) and re.fullmatch(r'20\d{2}', x) else x)

代码逻辑说明

  • isinstance(x, str):先筛选出字符串类型的单元格,避免对int、float、NaN等非字符串类型做无效处理
  • re.fullmatch(r'20\d{2}', x):精确匹配完整字符串为20开头的4位数字(确保只转换纯年份格式的字符串,不会误处理如'2023abc'这类包含年份的杂串)
  • 满足条件的字符串转为整数,其余值(包括非字符串类型、不符合正则的字符串、NaN)保持原类型和值不变

处理结果验证

处理后testdf['col1']的元素及类型如下:

元素类型
'abc'str
2023int
456int
789int
2021int
4.5float
'123'str
NaNfloat

完全符合需求:仅将符合格式的年份字符串转为整数,其余数据保持原样。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:40:02