我有一个数据帧如下:
df = pd.DataFrame({
"group_code": ['111', '111', '111', '111', '111', '111', '111', '222', '222','222', '222', '222', '222'],
"ind_code": ['K M trading', 'K.M trad', 'KM trading LL', 'bill payment', 'pays', 'PayMent', 'Payer', 'Rev12','Rev11','13 rev','Rev13','Rev .!','REV 17']
})
我想对列中的所有值进行分组:
'K M trading', 'K.M trad', 'KM trading LL'
作为"KM Trading"
。
有人能帮我吗?你知道吗
我试过下面的代码,但不起作用
def replace_(row):
if 'pay' in row.lower():
return 'Payment'
if 'rev' in row.lower():
return 'Rev'
if 'km' in row.lower():
return 'KM Trade'
else:
return row
df.ind_code = df.ind_code.apply(lambda row : replace_(row))
print(df)
您可以构建正则表达式的映射,并使用字典调用
Series.replace
。你知道吗在哪里
表示不区分大小写的替换,在要替换的字符之间有可选的句点和空格。你知道吗
您可以尝试使用levenshtein距离来计算两个单词之间的距离。 基本上,这个距离计算从字符串a到字符串b的单字符编辑(插入、删除或替换)的最小数量
例如,您可以使用基本字符串“km trading”,并将其与所有其他字符串进行比较,如果距离低于阈值(如4),则您可以非常确定该字符串是“km trading”的变体。你知道吗
这段代码取自Rosetta代码,该算法很难从纯粹的直觉理解,所以我建议查看一些深入解释该算法的教程。你知道吗
Oren revenge的答案非常棒,这里有一个针对您的具体案例的黑客解决方案(尽管很容易扩展):
相关问题 更多 >
编程相关推荐