我有一个包含4列的数据框,其中一列称为action_description,它包含“自由文本”,可以恢复为解决问题而采取的不同操作。
本专栏中的文字有时是错误的,我们有一个字典,用于所有着名的错误字样(例如:REPLCD - > REPLACED,.....)
我想使用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 - >延伸,推迟 - > DEFERRED
所以我的解决方案:DEFERED - > DEFERREDERED,它在DEFERED DEFERED中替换了DEF,它与ERED,DEFERRED + ERED连接。
我考虑过使用边界(r“\ b”),但是语法错误!!!
我如何克服这个问题。
提前谢谢。
答案 0 :(得分:1)
我猜你面临的问题是由于regex = True。如你所说,你有一本字典:
DEF -> DEFERRED, DEFERED -> DEFERRED
因此,当您通过 DEF ERED时,它首先找到 DEF ,并将其替换为 DEFERRED ,然后是 ERED < / strong>即可。所以你会得到:
DEFERED -> DEFERREDERED
简化:
DEF +ERED -> DEFERRED + ERED -> DEFFEREDERED
如有任何疑问,您可以发表评论。