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

如何基于另一DataFrame的条件为主DataFrame添加状态标识列?

实现DataFrame的id异常状态映射

数据情况

主数据DataFrame(固定位置):

id    name 
1      BEL
2      BEL
3      BEL
4      NYC
5      NYC
6      NYC
7      BER
8      BER      

包含数值的DataFrame(行数更多):

id    name  value
1      BEL   9
2      BEL   7
3      BEL   3
4      NYC   76
5      NYC   76
6      NYC   23
7      BER   76
8      BER   2 
3      BEL   7
4      NYC   5
5      NYC   4
6      NYC   2

需求

检查数值DataFrame中每个id是否存在value>10的记录,为主DataFrame添加is_ok列:

  • 0:该id存在value>10(异常)
  • 1:该id所有value都≤10(正常)

解决方案

步骤1:生成id的状态映射表

先对数值DataFrame按id分组,判断每组是否存在异常值,生成对应状态:

import pandas as pd

# 定义两个DataFrame(实际场景可替换为读取数据的代码)
main_df = pd.DataFrame({
    'id': [1,2,3,4,5,6,7,8],
    'name': ['BEL','BEL','BEL','NYC','NYC','NYC','BER','BER']
})

value_df = pd.DataFrame({
    'id': [1,2,3,4,5,6,7,8,3,4,5,6],
    'name': ['BEL','BEL','BEL','NYC','NYC','NYC','BER','BER','BEL','NYC','NYC','NYC'],
    'value': [9,7,3,76,76,23,76,2,7,5,4,2]
})

# 按id分组判断是否存在异常值,生成状态映射
id_status = value_df.groupby('id')['value'].apply(lambda x: 0 if (x > 10).any() else 1).reset_index(name='is_ok')

步骤2:合并到主DataFrame

将状态映射表与主DataFrame通过id关联,确保每个主数据的id都能匹配到对应状态:

result_df = main_df.merge(id_status, on='id', how='left')

最终结果

执行后得到的主DataFrame:

id name  is_ok
0   1  BEL      1
1   2  BEL      1
2   3  BEL      1
3   4  NYC      0
4   5  NYC      0
5   6  NYC      0
6   7  BER      0
7   8  BER      1

内容的提问来源于stack exchange,提问作者user16511234

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:31:08