看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)在处理身份证号等固定格式的字符串数据时,需要提取特定位置的字符。给定以下包含身份证号的数据,要求使用.str.slice()
方法提取出生日期信息。
import pandas as pd
data = {'id_card': ['110101199001011234',
'310105198502028765',
'440106199512159876']
}
df = pd.DataFrame(data)
print(df)
输出结果:
id_card
0 110101199001011234
1 310105198502028765
2 440106199512159876
具体要求:
代码如下:
import pandas as pd
data = {'id_card': ['110101199001011234',
'310105198502028765',
'440106199512159876']
}
df = pd.DataFrame(data)
# 精简链式调用写法
df['出生日期'] = (
df.id_card
.str.slice(6, 14)
.transform(lambda x: f"{x[:4]}-{x[4:6]}-{x[6:8]}")
)
print(df)
输出结果:
id_card 出生日期
0 110101199001011234 1990-01-01
1 310105198502028765 1985-02-02
2 440106199512159876 1995-12-15
参考代码的思路逻辑:使用最精简的链式调用方式,通过.str.slice(6, 14)
直接提取8位出生日期数字,然后使用.transform()
方法结合lambda函数和Python的字符串切片功能,一次性完成日期格式化。f-string
格式化字符串使代码更加简洁易读,整个操作在单行链式调用中完成,既高效又优雅。
(完)
更新时间:2025-09-17 17:36:06 标签:pandas python 身份证 出生日期