簡體   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