首页 > 解决方案 > pandas str 系列:切片后替换 str

问题描述

假设我有几个 DataFrames 一个特定的 Serie 像这样:

serie_complete_days = pd.Series(['20190320','20190321','20190322', '20190323', '20190324', '20190325', '20190326', '20190327'])

我试图只保留每个字符串的两个部分(日期和月份)并以欧洲格式替换它们,就像这样。

the_goal_is = pd.Series(['20-03','21-03','22-03', '23-03', '24-03', '25-03', '26-03', '27-03'])

我开始用 str.slice() 函数隔离每个部分:

days_only = serie_complete_days.str.slice(start = 6, stop = 8)
months_only = serie_complete_days.str.slice(start = 4, stop = 6)

我认为这是最简单的方法,因为我没有更改我的 DF 的索引。但是之后我错过了一些东西,我不知道 str.join()、str.replace() 或 str.update() 之间哪个函数最适合...

提前致谢 !

编辑:我想将此字符串保留为字符串。请不要 to_datetime()

标签: pythonstringpandasslice

解决方案


您可以使用Series.str.replace

result = serie_complete_days.str.replace(r'\d{4}(\d{2})(\d{2})', r'\g<2>-\g<1>')

或者您可以使用Series.dt.strftime

result = pd.to_datetime(serie_complete_days).dt.strftime('%d-%m')

这将返回一个系列:

0    20-03
1    21-03
2    22-03
3    23-03
4    24-03
5    25-03
6    26-03
7    27-03
dtype: object

推荐阅读