我有一列数据如下:

df = pd.DataFrame({'Ex1':['apple','apple1','Peear','peAr','b$nana','Bananas'],
'Ex2': ['Applet','banan','apples','PAIR','banana','apple'],
'Ex3':['Pears', 'Banaa', 'Apple', 'apple1', 'pear', 'abanana]}); df

然后我有三个数组将水果类型的拼写错误识别为标准水果类型:
apple = ['apple1','Applet','apples','Apple']
pear = ['Peear','peAr','PAIR','Pears','p3ar']
banana = ['b$nana','Bananas','banan','Banaa','abanana']

我如何遍历每一列,将拼写错误的结果更改为正确的结果。即,最终数据帧应如下所示:
    Ex1     Ex2     Ex3
0   apple   apple   pear
1   apple   banana  banana
2   pear    apple   apple
3   pear    pear    apple
4   banana  banana  pear
5   banana  apple   banana

我知道我可以用下面的代码来实现这个结果:
replacements = {
    "apple":'apple1',
    "apple":'Applet',
...}

df['Ex1'].replace(replacements, inplace=True)

但是我有一个1000多行的列表,我不想在replacements中遍历和替换每个行,因为这需要很多时间。
有什么建议可以让我按照原样使用applepearbanana变量吗?

最佳答案

涉及手写拼写错误列表的简单(甚至可能是简单)方法可以通过仅从列表中构造字典来实现自动化:

repl={s:n for n,l in [("apple",apple),("pear",pear),("banana",banana)]
      for s in l}

如果正确名称和拼写错误的列表位于某个数据结构(如包含字典)中,则可以自动构建这些名称和拼写错误的列表。(可以使用globals()locals()作为字典,但是必须过滤掉无关的条目。)

08-26 22:23
查看更多