我有一个很大的 CSV 文件,里面有很多短词,我需要把它们变成一个完整的词。我在这里发现了一些帖子,例如 1 , 2但其中大部分要么更改整行,要么需要手动逐一进行。
我的 CSV 文件如下所示:
infoID messages
111 we need to fix the car mag but we can't
113 we need a shf to perform eng change
115 gr is needed to change
116 bat needs change
117 car towed for ext change
118 car ml is high
.
.
我的另一个文件包含所有缩写词的完整词,我想用它来应用到我的文档中,它的形式是:
shf:shaft
gr:gear
ml:mileage
如果您能提供我也可以在我这边运行的代码,那就太好了。谢谢
请您参考如下方法:
将您的文本文件作为一个系列阅读
s
0 mag:magnitude
1 shf:shaft
2 gr:gear
3 bat:battery
4 ext:exhaust
5 ml:mileage
Name: 0, dtype: object
拆分冒号并将系列转换为字典映射键到它的替换:
dict(s.str.split(':').tolist())
# {'bat': 'battery',
# 'ext': 'exhaust',
# 'gr': 'gear',
# 'mag': 'magnitude',
# 'ml': 'mileage',
# 'shf': 'shaft'}
使用它来执行 replace使用 regex=True 操作:
df['messages'].replace(dict(s.str.split(':').tolist()), regex=True)
0 we need to fix the car magnitude but we can't
1 we need a shaft to perform eng change
2 gear is needed to change
3 battery needs change
4 car towed for exhaust change
5 car mileage is high
Name: messages, dtype: object
请注意,如果这些是严格的全字替换,您可以通过将关键字符串转换为使用字边界的正则表达式来扩展此解决方案。为了好的措施,也转义字符串:
import re
mapping = {fr'\b{re.escape(k)}\b': v for k, v in s.str.split(':').tolist()}
df['messages'].replace(mapping, regex=True)
0 we need to fix the car magnitude but we can't
1 we need a shaft to perform eng change
2 gear is needed to change
3 battery needs change
4 car towed for exhaust change
5 car mileage is high
Name: messages, dtype: object
