在python panda中将包含年份的不同格式的字符串列从2位数(YY)转换为4位数(YYYY)

5lhxktic  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(103)

我有一个以下列的数据框。每一行包含不同的格式字符串。

col                  |
----------------------
GRA/B
TPP
BBMY
...
SOCBBA 0 MAX
CMBD 0 MAX
EPR 5.75 MAX
...
PMUST 5.57643 02/15/34
LEO 0 12/30/2099
RGB 3.125 09/15/14
RGB 3.375 04/15/20

我想将所有日期转换为显示完整年份的格式。
有没有办法用正则表达式把它变成这样。

col                  |
----------------------
GRA/B
TPP
BBMY
...
SOCBBA 0 MAX
CMBD 0 MAX
EPR 5.75 MAX
...
PMUST 5.57643 02/15/2034
LEO 0 12/30/2099
RGB 3.125 09/15/2014
RGB 3.375 04/15/2020

现在我唯一能想到的就是

df['col'] = df['col'].str.replace('/14', '/2014')

对于每一年,但有很多年,它也将取代天和月以及。
我怎样才能正确地实现这一点,我应该使用正则表达式吗?

bksxznpy

bksxznpy1#

当它“以斜杠结尾,后跟2个数字”时,替换怎么样?

In [9]: df["col"] = df["col"].str.replace(r"/(\d{2})$", r"/20\1", regex=True)

In [10]: df
Out[10]:
                         col
0                      GRA/B
1                        TPP
2                       BBMY
3                        ...
4               SOCBBA 0 MAX
5                 CMBD 0 MAX
6               EPR 5.75 MAX
7                        ...
8   PMUST 5.57643 02/15/2034
9           LEO 0 12/30/2099
10      RGB 3.125 09/15/2014
11      RGB 3.375 04/15/2020

正则表达式:

  • /:文字正斜杠
  • (\d{2}):捕获2位数字
  • $:字符串结束

替代者:

  • /20:正斜杠和20
  • \1:正则表达式中的第一个捕获组,即最后2位

相关问题