首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具有多个变体的列中替换字符串值。

在具有多个变体的列中替换字符串值。
EN

Stack Overflow用户
提问于 2022-06-02 16:59:11
回答 4查看 865关注 0票数 4

我正在使用这个csv文件。,它是笔记本电脑信息的一个小数据集。

代码语言:javascript
复制
laptops = pd.read_csv('laptops.csv',encoding="Latin-1")
laptops["Operating System"].value_counts()

Windows      1125
No OS          66
Linux          62
Chrome OS      27
macOS          13
Mac OS          8
Android         2
Name: Operating System, dtype: int64

我想将macOS和macOS的变体合并到一个值"macOS“下。

我试过了,这很管用。

代码语言:javascript
复制
mapping_dict = {
    'Android': 'Android',
    'Chrome OS': 'Chrome OS',
    'Linux': 'Linux',
    'Mac OS': 'macOS',
    'No OS': 'No OS',
    'Windows': 'Windows',
    'macOS': 'macOS'
}

laptops["Operating System"] = laptops["Operating System"].map(mapping_dict)

laptops["Operating System"].value_counts()

Windows      1125
No OS          66
Linux          62
Chrome OS      27
macOS          21
Android         2
Name: Operating System, dtype: int64

这是唯一的办法还是最好的办法?假设这样的需求可能会出现在多个值(而不仅仅是macOS)。

EN

回答 4

Stack Overflow用户

发布于 2022-06-02 17:16:16

代码语言:javascript
复制
laptops['Operating System'] = laptops['Operating System'].str.replace(r'(?i)(mac|mc).*os', 'macOS', regex=True)
票数 1
EN

Stack Overflow用户

发布于 2022-06-03 22:48:16

这段代码能起作用。但你必须事先知道可能的变体。如果事先认识他们是不可行的,这将是另一个问题,不讨论这里的蟒蛇和熊猫标签。

df['Operating System'][df['Operating System'].str.lower().isin(['mac', 'osx', 'macos'])] = 'Mac OS'

票数 1
EN

Stack Overflow用户

发布于 2022-06-02 17:06:17

你可以简单的做

代码语言:javascript
复制
laptops['Operating System'] = laptops['Operating System'].replace('Mac OS', 'macOS')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72479794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档