首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >洁净室型数据

洁净室型数据
EN

Stack Overflow用户
提问于 2020-10-14 08:00:35
回答 3查看 73关注 0票数 0

我试图清理我的数据,有一列名为“房间类型”( room Type),它有大约160-170个不同的值,应该只有10或15。例如,大多数数据都有这样的数据;一个房间以不同的方式输入:

代码语言:javascript
运行
复制
"Single room level 1"
"Single room level 2"
"Single room Street Side"

“1层大床房”“2楼大床房”“套间街侧”“套房(包括迷你酒吧)”

我想清除所有的子数据,如层或街道侧,我希望我的数据集显示如下行:“单人房”“大床房”“大床房”“套房”“套房”

我想这样做,这样就更容易使用groupby函数,并根据每种类型的房间获得收益。我很抱歉没说清楚。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-14 08:16:36

再来一次。

输入

代码语言:javascript
运行
复制
id  room_type
1   Single room level 1
2   Single room level 2
3   Single room Street Side
4   Double room Street Side

代码语言:javascript
运行
复制
df['room_type']= np.where(df['room_type'].str.contains('Single'),'Single','Double')

输出

代码语言:javascript
运行
复制
id  room_type
1   Single
2   Single
3   Single
4   Double

如果您有15种类型的房间,您可以使用np.select而不是np.where

票数 0
EN

Stack Overflow用户

发布于 2020-10-14 08:11:41

下面是用一个例子来实现这一点的方法

代码语言:javascript
运行
复制
import pandas as pd
import re
df = pd.DataFrame({'room_type': ["single", 'Single room', 'room', 'not a rooom']})
df['room_type'] = df['room_type'].apply(lambda room_type: 'Single Room' if re.search(r'single', room_type) else room_type)

上面的任何值都将替换为它中的单个

票数 0
EN

Stack Overflow用户

发布于 2020-10-14 08:25:38

另一种略短的解决办法是:

代码语言:javascript
运行
复制
import pandas as pd
df = pd.DataFrame({'room_type': ["Single room level 1", "Single room level 2", 
                                 "Single room Street Side", "Double Room"]})
df.room_type.apply(lambda x: "Single Room" if "single" in x.lower() else x)

如果您的数据不一致,那么您也可能有多个大写的单词“单”,所以您需要比较这个词的小写版本。您只需使用in操作符(如在"single" in "single room"中)来检查"single“是否属于字符串,并将此函数应用于整个列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64349001

复制
相关文章

相似问题

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