Python 正在从字符串列表中删除子字符串

Python 正在从字符串列表中删除子字符串,python,pandas,substring,Python,Pandas,Substring,我有一列值,如下所示 array(['Mar 2018', 'Jun 2018', 'Sep 2018', 'Dec 2018', 'Mar 2019', 'Jun 2019', 'Sep 2019', 'Dec 2019', 'Mar 2020', 'Jun 2020', 'Sep 2020', 'Dec 2020'], dtype=object) 根据这些值,我需要输出为 array(['Mar'18', 'Jun'18', 'Sep'18', 'Dec'18'

我有一列值,如下所示

array(['Mar 2018', 'Jun 2018', 'Sep 2018', 'Dec 2018', 'Mar 2019',
       'Jun 2019', 'Sep 2019', 'Dec 2019', 'Mar 2020', 'Jun 2020',
       'Sep 2020', 'Dec 2020'], dtype=object)
根据这些值,我需要输出为

array(['Mar'18', 'Jun'18', 'Sep'18', 'Dec'18', 'Mar'19',
       'Jun'19', 'Sep'19', 'Dec'19', 'Mar'20', 'Jun'20',
       'Sep'20', 'Dec'20'], dtype=object)
我试过以下代码

df['Period'] = df['Period'].replace({'20','''})
但在这里它没有转换,如何替换相同的

有什么帮助吗

谢谢

试试这个:

df['Period'].str.replace(r“\s\d{2}(\d{2})”,r“'\1”,regex=True)
在替换部件中,
\1
指的是捕获组,在本例中是最后两位数字。

请尝试以下操作:

df['Period'].str.replace(r“\s\d{2}(\d{2})”,r“'\1”,regex=True)
在替换部件中,
\1
指的是捕获组,这是本例中的最后两位。

遵循您的代码(稍微更改为工作)将无法获得您所需的,因为它将替换所有“20”

>>> df['Period'] = df['Period'].str.replace('20','')

Out[179]: 
    Period
0   Mar 18
1   Jun 18
2   Sep 18
3   Dec 18
4   Mar 19
5   Jun 19
6   Sep 19
7   Dec 19
8     Mar 
9     Jun 
10    Sep 
11    Dec 
另一种不使用
regex
的方法是使用向量化
str
方法,更多:

输出

df

      Period Period_refined
0   Mar 2018         Mar'18
1   Jun 2018         Jun'18
2   Sep 2018         Sep'18
3   Dec 2018         Dec'18
4   Mar 2019         Mar'19
5   Jun 2019         Jun'19
6   Sep 2019         Sep'19
7   Dec 2019         Dec'19
8   Mar 2020         Mar'20
9   Jun 2020         Jun'20
10  Sep 2020         Sep'20
11  Dec 2020         Dec'20
遵循您的代码(稍微更改为工作)将无法满足您的需要,因为它将取代所有的“20”

>>> df['Period'] = df['Period'].str.replace('20','')

Out[179]: 
    Period
0   Mar 18
1   Jun 18
2   Sep 18
3   Dec 18
4   Mar 19
5   Jun 19
6   Sep 19
7   Dec 19
8     Mar 
9     Jun 
10    Sep 
11    Dec 
另一种不使用
regex
的方法是使用向量化
str
方法,更多:

输出

df

      Period Period_refined
0   Mar 2018         Mar'18
1   Jun 2018         Jun'18
2   Sep 2018         Sep'18
3   Dec 2018         Dec'18
4   Mar 2019         Mar'19
5   Jun 2019         Jun'19
6   Sep 2019         Sep'19
7   Dec 2019         Dec'19
8   Mar 2020         Mar'20
9   Jun 2020         Jun'20
10  Sep 2020         Sep'20
11  Dec 2020         Dec'20

有了您展示的样品,请尝试以下内容

df['Period'].replace(r" \d{2}", "'", regex=True)
输出如下

0   Mar'18
1   Jun'18
2   Sep'18
3   Dec'18
4   Mar'19
5   Jun'19
6   Sep'19
7   Dec'19
8   Mar'20
9   Jun'20
10  Sep'20
11  Dec'20

有了您展示的样品,请尝试以下内容

df['Period'].replace(r" \d{2}", "'", regex=True)
输出如下

0   Mar'18
1   Jun'18
2   Sep'18
3   Dec'18
4   Mar'19
5   Jun'19
6   Sep'19
7   Dec'19
8   Mar'20
9   Jun'20
10  Sep'20
11  Dec'20

@克里斯1992,欢迎你,谢谢你接受答案。你也可以投票给所有其他有用的答案,鼓励所有用户为他们的帮助欢呼:)我在哪里可以引用regex字符。有没有链接可以参考相同的内容,以便将来对我有用?@Krish1992,你的意思是为了学习正则表达式,如果有,请使用下面的网站,我总是参考相同的内容,它的知识非常丰富。干杯,快乐学习:)感谢@RavinderSingh13访问该网站。@Krish1992,欢迎光临,感谢您接受答案。你也可以投票给所有其他有用的答案,鼓励所有用户为他们的帮助欢呼:)我在哪里可以引用regex字符。有没有链接可以参考相同的内容,以便将来对我有用?@Krish1992,你的意思是为了学习正则表达式,如果有,请使用下面的网站,我总是参考相同的内容,它的知识非常丰富。干杯和愉快的学习:)感谢@RavinderSingh13访问站点。投票支持非正则表达式解决方案,但
'在哪里(
:)投票支持非正则表达式解决方案,但
'在哪里(
:)