首页 > 解决方案 > 如何组合具有相似列名的数据列 Pandas

问题描述

我有一个具有许多相似列名(基本上是拼写错误的单词)的数据,例如:

apple    grapes    apples    bana    apyles    grayes    graph    banana

在这里,我想合并列“apple, apples, apyles”,然后是“grapes, grayes, graph”和“bana,banana”。我怎样才能做到这一点?

*编辑评论:

问:当您说“结合”时,您是什么意思。你能包括样本输入和输出吗?

答。

输入

apple    grapes    apples    bana    apyles    grayes    graph    banana
  1         2         3        4        5         6        7         8

输出

apple    grape    banana
  9       15         12 

标签: pythonpandasfuzzywuzzy

解决方案


fuzzywuzzy您可以尝试以下方法。请注意,fuzz.ratio我可以用来让它工作的最佳选择是70

import pandas as pd
from fuzzywuzzy import fuzz
l = []
correct = ['apple', 'grapes', 'banana']
cols = df.columns[df.columns.isin(correct)]
for col in cols:
    l.append([c for c in df.columns if fuzz.ratio(col,c) > 70])
df = df.T.reset_index()
for i in range(len(correct)):
    for j in l[i]:
        df['index'] = df['index'].replace(j, correct[i])
df = df.groupby('index').sum().T
df
Out[1]: 
index  apple  banana  grapes
0          9      12      15

推荐阅读