![](/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.