繁体   English   中英

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

[英]Replace keywords in dataframe column using pandas dictionary

我有一个包含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-> DEFERRED

所以用我的解决方案:DEFERED-> DEFERREDERED,它用DEFERRED代替DEFERED中的DEF,并与ERED,DEFERRED + ERED串联。

我考虑过使用边界(r“ \\ b”),但是语法错误!

我该如何克服这个问题。

先感谢您。

我猜您面临的问题是由于regex = True。 正如您提到的,您有一本字典:

DEF -> DEFERRED, DEFERED -> DEFERRED

因此,当您通过DEF ERED时,它首先找到DEF并将其替换为DEFERRED ,然后是ERED 这样您将获得:

DEFERED -> DEFERREDERED 

简化:

DEF +ERED -> DEFERRED + ERED -> DEFFEREDERED

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM