You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据ID的房间服务情况按条件替换DataFrame列值?

解决方案:按ID批量替换房间号列值

没问题,我来帮你搞定这个需求!核心思路是先判断每个ID是否服务过9、10、11号房间,再统一替换该ID对应的所有房间号值。下面是两种实用的实现方式:

方法一:先提取目标ID集合,再映射替换

这种方法先筛选出符合条件的ID,再通过映射完成替换,适合数据量较大的场景,执行效率更高。

import pandas as pd

# 1. 构造示例数据(替换成你自己的DataFrame即可)
data = {
    'first_columns': [1, 1, 2, 2, 3, 3, 4],
    'second_columns': [8, 9, 10, 12, 7, 8, 11]
}
df = pd.DataFrame(data)

# 2. 定义需要检查的目标房间号
target_rooms = {9, 10, 11}

# 3. 获取所有曾服务过目标房间的ID
ids_with_target = df[df['second_columns'].isin(target_rooms)]['first_columns'].unique()

# 4. 替换second_columns的值:目标ID对应的替换为0,其余替换为1
df['second_columns'] = df['first_columns'].apply(lambda x: 0 if x in ids_with_target else 1)

方法二:用groupby + transform直接处理

这种方法更直观,通过分组后对每个ID组进行判断,代码简洁且逻辑清晰,适合快速实现需求。

import pandas as pd

# 构造示例数据
data = {
    'first_columns': [1, 1, 2, 2, 3, 3, 4],
    'second_columns': [8, 9, 10, 12, 7, 8, 11]
}
df = pd.DataFrame(data)

target_rooms = {9, 10, 11}

# 分组后对每个组的房间号列进行判断,返回对应替换值
df['second_columns'] = df.groupby('first_columns')['second_columns'].transform(
    lambda group: 0 if group.isin(target_rooms).any() else 1
)

处理后结果示例

两种方法执行后,DataFrame都会输出如下结果:

first_columnssecond_columns
10
10
20
20
31
31
40

你可以根据自己的数据集大小和使用习惯选择合适的方法~

内容的提问来源于stack exchange,提问作者Imran Ahmad Ghazali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:09:25