如何通过导入TXT文件替换Pandas DataFrame中的指定字符串?
嘿,这事儿不难,我帮你捋清楚怎么用TXT文件里的规则替换DataFrame列中的指定字符串,咱们一步步来:
步骤1:先准备好你的替换规则TXT文件
首先得把要替换的“旧字符串→新字符串”规则写到TXT里,建议用一个不会出现在字符串里的分隔符(比如|)把新旧字符串分开,每行一条规则。针对你的咖啡品牌场景,规则可以这么写:
Starbucks|星巴克
Tullys|塔利咖啡
Seattles Best|西雅图最佳咖啡
Dunkin|唐恩都乐
Daily Dozen|每日十二咖啡
把这个文件存成replace_rules.txt就行。
步骤2:读取TXT文件生成替换字典
接下来用Python读取这个TXT,把规则转成pandas能识别的字典格式:
# 初始化空字典存储替换规则 replace_mapping = {} # 读取TXT文件 with open('replace_rules.txt', 'r', encoding='utf-8') as rule_file: for line in rule_file: # 跳过空行,避免报错 cleaned_line = line.strip() if not cleaned_line: continue # 按分隔符拆分新旧字符串 old_str, new_str = cleaned_line.split('|') replace_mapping[old_str] = new_str
步骤3:对DataFrame的Utterance列执行替换
现在直接用pandas的replace方法就能批量替换了。这里要注意两个场景:
- 如果是要替换字符串里的子串(比如把“Directions to Starbucks”里的Starbucks换成星巴克),记得加上
regex=True参数; - 如果是要完全匹配整行的Utterance值,去掉这个参数就行。
代码示例:
import pandas as pd # 假设你的coffee_directions_df已经加载好了 coffee_directions_df['Utterance'] = coffee_directions_df['Utterance'].replace(replace_mapping, regex=True) # 看看替换后的效果 print(coffee_directions_df[['Utterance', 'Frequency']].head())
一些实用小提醒
- 如果你的TXT用了其他分隔符(比如逗号),记得把
split('|')改成对应的split(','),但要确保字符串里不会出现这个分隔符,不然会拆分出错——要是怕这个,也可以用csv模块来读取更稳妥。 - 要是需要忽略大小写匹配(比如把“starbucks”和“Starbucks”都替换),可以用下面的按单词匹配逻辑:
# 忽略大小写的替换示例 coffee_directions_df['Utterance'] = coffee_directions_df['Utterance'].apply( lambda x: ' '.join([replace_mapping.get(word.lower(), word) for word in x.split()]) )
内容的提问来源于stack exchange,提问作者user_seaweed
相关产品推荐
相关产品推荐

