首页 > 解决方案 > 无论大小写如何,对相同的字符进行分组,带空格和不带空格

问题描述

我有一个数据集,其中包含用户输入的汽车类型,其值如下:1.6TDI, 1.6 TDI, 2.0TDI, 2,0 TDI, 3.0BlueTech, 3,0 blue tech等等。我需要一个来平衡这些值。

对于初学者,我会将它们全部用大写字母替换,. 但我不知道如何检查相同的 ascii 字符和数字顺序,而不考虑空格并将它们分组在一个值下。

如果我只用模型名称替换空格,那看起来会很难看。想法是使用出现次数最多的值并将其他值转换为该值。

任何想法都非常受欢迎......我不需要完整的代码,好的指针就足够了。

解释

想法是找到一个真实值,例如 1.6 TDI,并将所有其他外观与该值相等。

标签: pythonpandasscikit-learnpreprocessor

解决方案


你可以做这样的事情

df['cars'] = df['cars'].str.upper().str.replace(',','.').str.replace(' ','')

输入

           cars     val
0   1.6TDI          1
1   1.6 TDI         2
2   2.0TDI          3
3   2,0 TDI         3
4   3.0BlueTech     5
5   3,0 blue tech   4

输出

           cars     val
0   1.6TDI          1
1   1.6TDI          2
2   2.0TDI          3
3   2.0TDI          3
4   3.0BLUETECH     5
5   3.0BLUETECH     4

groupby甚至可以在不转换列的情况下执行功能

df.groupby(df['cars'].str.upper().str.replace(',','.').str.replace(' ',''))['val'].sum().reset_index(name='Sum')

结果

           cars     Sum
0   1.6TDI          3
1   2.0TDI          6
2   3.0BLUETECH     9

推荐阅读