使用熊猫字典替换数据帧列中的关键字



我有一个包含 4 列的数据帧,其中一列称为 action_description,它包含"自由文本",可以恢复为解决问题而执行的不同操作。

本专栏中的单词有时会写错,我们有一个词典,用于所有著名的错误单词(例如:REPLCD ->替换,.....)

我想使用 python 代码替换我列中的所有错误单词。

这是我使用的代码:

法典:

import sys
import pyspark
import pandas_datareader
import re
import csv
import xlrd
import pandas as pd
import numpy as np
import datetime
from pyspark.context import SparkContext
from pyspark.sql.functions import *
from pandas import DataFrame
from pandas_datareader import data, wb
from pandas import *
xls = ExcelFile("test_doc_2.xls")
df = xls.parse(xls.sheet_names[0])
df.drop(df.columns[[0, 1]],inplace=True,axis=1)
df2 = Series(df.TO_VALUE.values,index=df.FROM_VALUE).to_dict()
xls1 = ExcelFile("Test_Source_New_2.xls")
df1 = xls1.parse(xls1.sheet_names[0])
df1['WORK_PERFORMED_NEW'] = df1['WORK_PERFORMED'].replace(df2, regex=True)

此解决方案有效,但在某些情况下除外,

在我的字典中: DEF -> 延期, 延期 -> 延期

所以使用我的解决方案:延迟 -> 延迟,它用延迟替换了 DEFERED,并与 ERED、延迟+ERED 连接。

我想过使用边界(r"\b"),但我得到语法错误!!

我怎样才能克服这个问题.

提前谢谢你。

我想您面临的问题是由于正则表达式 = True。正如你提到的,你有一本字典:

DEF -> DEFERRED, DEFERED -> DEFERRED

因此,当您通过DEFERED 时,它首先找到DEF并将其替换为延迟到位,然后是ERED。所以你会得到:

DEFERED -> DEFERREDERED 

简化:

DEF +ERED -> DEFERRED + ERED -> DEFFEREDERED

如有任何疑问,您可以发表评论。

最新更新