[英]Python: Pandas dataframe str replace to partial lower case string
我有 pandas dataframe 如下。 我只想 dataframe 包含 -P 到 _p(之后是小写),然后用小写删除和更改字符串。
>>> data= ['AAP','AAPL','BRK-A','AAIC-PB','AAP-C','YAB-PP']
>>> a = pd.DataFrame(data,columns=['code'])
>>> a
code
0 AAP
1 AAPL
2 BRK-A
3 AAIC-PB
4 AAP-C
5 YAB-PP
>>> a['code']=a['code'].str.replace('-P','_p')
>>> a
>>> a
code
0 AAP
1 AAPL
2 BRK-A
3 AAIC_pB
4 AAP-C
5 YAB_pP
>>> a['code']=a['code'].str.replace('-','')
>>> a
code
0 AAP
1 AAPL
2 BRKA
3 AAIC_pB
4 AAPC
5 YAB_pP
>>>
所需的 output 是
code
0 AAP
1 AAPL
2 BRKa
3 AAIC_pb
4 AAPc
5 YAB_pp
你可以这样做:
import pandas as pd
data= ['AAP','AAPL','BRK-A','AAIC-PB','AAP-C','YAB-PP']
a = pd.DataFrame(data,columns=['code'])
a['code'] = a['code'].str.replace('-(P.*)', lambda x: f'_{x.group(1).lower()}')
a['code'] = a['code'].str.replace('-(\w.*)', lambda x: x.group(1).lower())
print(a)
Output
code
0 AAP
1 AAPL
2 BRKa
3 AAIC_pb
4 AAPc
5 YAB_pp
更新
在 Python 3.6 之前的版本中:
a['code'] = a['code'].str.replace('-(P.*)', lambda x: '_{}'.format(x.group(1).lower()))
a['code'] = a['code'].str.replace('-(\w.*)', lambda x: x.group(1).lower())
print(a)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.