Python如何遍历数据集列 比对列表值实现跨列条件赋值
Python实现列值匹配批量赋值方案
处理这类表格列匹配赋值的需求,优先用pandas库实现,不需要手写逐行遍历,执行效率高代码也简洁。
具体实现步骤
- 第一步:安装并导入pandas(如果没装的话先执行
pip install pandas) - 第二步:读取你的数据集,定义要匹配的目标姓名列表(推荐转成集合结构,大数据量下匹配速度远快于列表)
- 第三步:用
isin()方法批量判断每一行的col A值是否在目标名单内,直接将布尔结果转成int类型(True对应1,False对应0)赋值给col B即可。
完整代码示例
import pandas as pd # -------------------------- # 1. 读取数据(替换成你自己的文件路径即可) # 比如读csv:df = pd.read_csv("你的数据文件.csv") # 比如读excel:df = pd.read_excel("你的数据文件.xlsx") # 这里用模拟数据做演示 df = pd.DataFrame({ "col A": ["james", "tom", "clara", "bob", "michael", "alice"], "col B": [None]*6 }) # 2. 定义要匹配的姓名集合 target_names = {"james", "michael", "clara"} # 3. 批量赋值(核心逻辑,1行代码搞定) df["col B"] = df["col A"].isin(target_names).astype(int) # 如果存在大小写不统一的情况(比如Col A里有James/CLARA这类写法),先统一转小写再匹配 # df["col B"] = df["col A"].str.lower().isin(target_names).astype(int) # 处理完可以把结果存回文件 # df.to_excel("处理结果.xlsx", index=False)
运行后得到的结果完全符合需求:col A中姓名在指定列表内的行,col B值为1,其余为0。
无第三方库的原生Python实现
如果你不想依赖pandas,数据本身是字典列表结构,可以直接循环判断赋值:
# 目标匹配名单 target_names = {"james", "michael", "clara"} # 你的原始数据(每行是一个字典) data = [ {"col A": "james", "col B": None}, {"col A": "tom", "col B": None}, {"col A": "clara", "col B": None}, {"col A": "michael", "col B": None}, {"col A": "bob", "col B": None} ] # 逐行判断赋值 for row in data: row["col B"] = 1 if row["col A"].lower() in target_names else 0
内容的提问来源于stack exchange,提问作者Kartikey Shrivastav
相关产品推荐
相关产品推荐

