python - 无论大小写如何,对相同的字符进行分组,带空格和不带空格
问题描述
我有一个数据集,其中包含用户输入的汽车类型,其值如下:1.6TDI, 1.6 TDI, 2.0TDI, 2,0 TDI, 3.0BlueTech, 3,0 blue tech
等等。我需要一个来平衡这些值。
对于初学者,我会将它们全部用大写字母替换,
,.
但我不知道如何检查相同的 ascii 字符和数字顺序,而不考虑空格并将它们分组在一个值下。
如果我只用模型名称替换空格,那看起来会很难看。想法是使用出现次数最多的值并将其他值转换为该值。
任何想法都非常受欢迎......我不需要完整的代码,好的指针就足够了。
解释
想法是找到一个真实值,例如 1.6 TDI,并将所有其他外观与该值相等。
解决方案
你可以做这样的事情
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
推荐阅读
- android - 不能嵌套Relativelayout吗?
- excel - 在 VBA 中使用 xLookUp 返回值的范围
- javascript - 在反应中映射数组的空检查
- java - 如何在 Wso2 ei 中编写自定义调解器以将列表有效负载的 json 列表转换为单个列表
- python - 如何在 Django 中创建两个小时之间的时隙间隔
- dart - dart 中的 JSString 和 JSInt 类是什么?
- c# - SortedDictionary 与排序字典的性能
- sql - SQL - 如何查找列组合之前是否发生过?
- vb.net - Google 搜索 URL 并添加 Listbox C# vb.net
- ios - 当来自后台时,CMSampleBuffer 的音频格式会发生变化