![](/img/trans.png)
[英]Using a dictionary to replace column values on given index numbers on a pandas dataframe
[英]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.