
目录
一、数据清洗必备利器:rpartition方法
1.1 方法解剖
# 从右向左劈分字符串
file_paths = pd.Series(['/data/report_2023.xlsx', '/tmp/error.log'])
result = file_paths.str.rpartition('/')
# 输出三维结构
"""
0 1 2
0 /data / report_2023.xlsx
1 /tmp / error.log
"""
1.2 实战场景
场景1:提取文件扩展名
# 提取文件类型
files = pd.Series(['合同.pdf', '报价单.docx', '数据备份.tar.gz'])
file_types = files.str.rpartition('.')[2]
# 结果:pdf | docx | tar.gz
场景2:分离域名与路径
urls = pd.Series([
'https://www.example.com/blog/2023',
'http://news.sina.com.cn/china/'
])
domains = urls.str.rpartition('/')[0].str.rpartition('//')[2]
# 结果:www.example.com | news.sina.com.cn
二、精准字符串裁剪:slice与slice_replace
2.1 切片三剑客对比
| 方法 | 方向 | 是否替换 | 典型场景 |
|---|---|---|---|
| slice | 左→右 | 否 | 提取固定位置字符 |
| slice_replace | 任意 | 是 | 隐藏敏感信息 |
| str[]索引 | 左→右 | 否 | 简单位置提取 |
2.2 金融数据处理实例
# 隐藏银行卡中间数字
card_numbers = pd.Series([
'6225880134567890',
'436742199911223344'
])
masked = card_numbers.str.slice_replace(6, -4, repl='****')
"""
0 622588****7890
1 436742****3344
"""
2.3 时间格式转换
# 将YYYYMMDD转为YYYY-MM-DD
dates = pd.Series(['20230815', '20231225'])
formatted = dates.str.slice_replace(4,4, repl='-').str.slice_replace(7,7, repl='-')
# 结果:2023-08-15 | 2023-12-25


2938

被折叠的 条评论
为什么被折叠?



