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访问站点。投票支持非正则表达式解决方案,但
'在哪里(
:)投票支持非正则表达式解决方案,但'在哪里(
:)