我有一列数据如下:
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
中遍历和替换每个行,因为这需要很多时间。有什么建议可以让我按照原样使用
apple
、pear
和banana
变量吗? 最佳答案
涉及手写拼写错误列表的简单(甚至可能是简单)方法可以通过仅从列表中构造字典来实现自动化:
repl={s:n for n,l in [("apple",apple),("pear",pear),("banana",banana)]
for s in l}
如果正确名称和拼写错误的列表位于某个数据结构(如包含字典)中,则可以自动构建这些名称和拼写错误的列表。(可以使用
globals()
或locals()
作为字典,但是必须过滤掉无关的条目。)