看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
本案例将 Excel 或者序列数据中的月份信息转为两位数字,即 1 至 9 月的数字前补 0。
原数据及转换的目标数据如下:
'''
时间
2020年12月上半月
2020年12月下半月
2020年8月上半月
2020年8月下半月
2020年9月上半月
2020年9月下半月
2021年10月上半月
2021年12月下半月
'''
# 转为:
'''
时间
2020年12月上半月
2020年12月下半月
2020年08月上半月
2020年08月下半月
2020年09月上半月
2020年09月下半月
2021年10月上半月
2021年12月下半月
'''
我们分析一下这些数字在每一行数据的「年月」字符之间,我们只要将其提取并替换即可。先读取数据,复制原数据,然后用剪贴板读取数据:
import pandas as pd
df = pd.read_clipboard()
df
然后用 .str 的 replace() 方法,利用正则进行匹配替换:
pat = r"(?P<a>\w+年)(?P<b>\w+)(?P<c>月\w+)"
repl = lambda m: m.group('a')+m.group('b').zfill(2)+m.group('c')
df.时间.str.replace(pat, repl, regex=True)
'''
0 2020年12月上半月
1 2020年12月下半月
2 2020年08月上半月
3 2020年08月下半月
4 2020年09月上半月
5 2020年09月下半月
6 2021年10月上半月
7 2021年12月下半月
Name: 时间, dtype: object
'''
其中 zfill(2) 可以保证一位数字前边补 0。
(完)
更新时间:2024-08-18 15:38:56 标签:pandas python 日期