基于另一DataFrame的CELLNAME匹配更新DataFrame的Status列
问题解决:基于CELLNAME匹配更新DataFrame的Status列
你的代码存在两个核心问题:
- 语法错误:判断元素相等需用双等号
==,你误写为赋值用的单等号=; - 逻辑错误:直接逐行对比两列仅适用于行数、顺序完全一致的场景,无法实现「CELLNAME是否存在于另一个DataFrame」的匹配需求。
正确实现代码
import pandas as pd import numpy as np # 读取数据文件 df1 = pd.read_csv('Test 1.csv') df2 = pd.read_csv('Test 1 with No Status.csv') # 判断CELLNAME是否在两个DataFrame中都存在,设置对应Status值 df2['Status'] = np.where(df2['CELLNAME'].isin(df1['CELLNAME']), 'Yes', 'No') # 保存更新后的结果 df2.to_csv('Test 1 with Status.csv', index=False)
关键说明
df2['CELLNAME'].isin(df1['CELLNAME'])会生成布尔序列,精准标记df2中每个CELLNAME是否存在于df1的CELLNAME列;- 若df1的CELLNAME存在大量重复值,可先转成集合提升匹配效率:
df2['Status'] = np.where(df2['CELLNAME'].isin(set(df1['CELLNAME'])), 'Yes', 'No')
内容的提问来源于stack exchange,提问作者syed
相关产品推荐
相关产品推荐

