Pandas:替换字符串中的子字符串
- 2025-03-06 08:52:00
- admin 原创
- 84
问题描述:
我想替换icashier.alipay.com
列中的子字符串df
url
icashier.alipay.com/catalog/2758186/detail.aspx
icashier.alipay.com/catalog/2758186/detail.aspx
icashier.alipay.com/catalog/2758186/detail.aspx
vk.com
到aliexpress.com
。
期望输出
aliexpress.com/catalog/2758186/detail.aspx
aliexpress.com/catalog/2758186/detail.aspx
aliexpress.com/catalog/2758186/detail.aspx
vk.com
我尝试了df['url'].replace('icashier.alipay.com', 'aliexpress.com', 'inplace=True')
但它又回来了empty dataframe
。
解决方案 1:
使用replace
withdict
替换 and regex=True
:
df['url'] = df['url'].replace({'icashier.alipay.com': 'aliexpress.com'}, regex=True)
print (df)
url
0 aliexpress.com/catalog/2758186/detail.aspx
1 aliexpress.com/catalog/2758186/detail.aspx
2 aliexpress.com/catalog/2758186/detail.aspx
3 vk.com
解决方案 2:
用于str.replace
替换子字符串,replace
寻找完全匹配,除非你传递正则表达式模式和参数regex=True
:
In [25]:
df['url'] = df['url'].str.replace('icashier.alipay.com', 'aliexpress.com')
df['url']
Out[25]:
0 aliexpress.com/catalog/2758186/detail.aspx
1 aliexpress.com/catalog/2758186/detail.aspx
2 aliexpress.com/catalog/2758186/detail.aspx
3 vk.com
Name: url, dtype: object
解决方案 3:
如果有人(像我一样)需要替换整个 DataFrame 中的子字符串:
df = df.apply(lambda col: col.str.replace('icash...', 'aliex...'))
或者仅在定义的列中(并且所有其他保持不变):
cols = ['a', 'c'] # list of all columns with value to replace
df = df.apply(lambda col: col.str.replace('icash...', 'aliex...') if col.name in cols else col)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD