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

如何基于列表更新Pandas DataFrame的Status列?(Python)

问题:更新DataFrame中缺陷ID对应的Status值

给定代码与数据

import pandas as pd

data = [{'car' :'audi','id':'ab','year':2001,'wheel':4},
        {'car' :'honda','id':'aa','year':2002,'wheel':15},
        {'car' :'tesla','id':'aaa','year':2003,'wheel':5}]

keys=['a','aa','aaa','avaa','2ffa']

目标DataFrame初始状态

CarIDYearStatusWheels
Audiab2001OK4
Hondabaaa2002OK4
Teslaaaa2003OK4
Teslaavaa2023OK4

已知keys列表中的ID为缺陷ID,需将DataFrame中ID属于该列表的行的Status列值从“OK”更新为“Defective”,实现方法如下:


方法一:使用loc结合isin精准更新

# 构造DataFrame并补全缺失列(匹配目标表格结构)
df = pd.DataFrame(data)
df['Status'] = 'OK'
df['Wheels'] = 4

# 核心更新逻辑:筛选ID在keys中的行,修改Status值
df.loc[df['id'].isin(keys), 'Status'] = 'Defective'

逻辑说明:

  • df['id'].isin(keys)生成布尔索引,标记出ID列值存在于缺陷列表的行
  • df.loc[布尔索引, 'Status']定位到目标行的Status列,批量赋值为Defective

方法二:使用numpy.where批量赋值

import numpy as np

# 构造DataFrame并补全列(同上)
df = pd.DataFrame(data)
df['Status'] = 'OK'
df['Wheels'] = 4

# 用where条件批量替换Status值
df['Status'] = np.where(df['id'].isin(keys), 'Defective', df['Status'])

逻辑说明:

  • numpy.where根据条件判断:满足ID在keys中的行赋值为Defective,不满足的保留原Status值

更新后的DataFrame结果

CarIDYearStatusWheels
Audiab2001OK4
Hondabaaa2002OK4
Teslaaaa2003Defective4
Teslaavaa2023Defective4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:30:47