如何在Pandas DataFrame中将各类'Heb'相关文本统一替换为'HEB'?
解决Pandas结合Sidetable多匹配条件替换的报错问题
报错原因:
str.contains()在设置regex=False时,仅支持单个字符串作为匹配参数,无法接收列表。当你传入列表时,它会尝试对列表调用upper()方法做大小写统一,但列表本身没有这个属性,因此触发AttributeError。修复方案:
将多个匹配项用|拼接成正则表达式模式串(|表示“或”逻辑),同时保留case=False忽略大小写,即可一次性匹配所有目标内容。
完整代码示例
import pandas as pd import sidetable # 构造示例数据 data = { 'Description': ['HEB', 'HEB#123', 'HEB online', 'H-E-B Gas', 'Heb Carwash'], 'Amount': [100.00]*5 } df = pd.DataFrame(data) # 多条件匹配替换的正确写法 df['Description'] = df.st.replace( (df['Description'].str.contains(r'HEB|H-E-B|Heb online', case=False), 'HEB') ) print(df)
输入输出示例
输入表格
| Description | Amount |
|---|---|
| HEB | 100.00 |
| HEB#123 | 100.00 |
| HEB online | 100.00 |
| H-E-B Gas | 100.00 |
| Heb Carwash | 100.00 |
输出表格
| Description | Amount |
|---|---|
| HEB | 100.00 |
| HEB | 100.00 |
| HEB | 100.00 |
| HEB | 100.00 |
| HEB | 100.00 |
内容的提问来源于stack exchange,提问作者EmekaO
相关产品推荐
相关产品推荐

