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

匹配DataFrame列后无法写入YES至Key列的技术求助

问题原因及解决方法

为什么你的代码写不进"YES"

你用iterrows()遍历的时候,拿到的row是原DataFrame行的副本,修改这个副本里的Key值根本不会影响到原df_existing,所以最后Key列还是空的。而且这种双重循环的写法效率极低,数据量大的时候会慢到离谱,完全没必要这么做。

最优解决方案(一行代码搞定)

直接用Pandas的isin()方法,判断Code列的值是否在你的dlist里,然后直接赋值给Key列:

# 先处理得到dlist(这部分你的代码没问题)
dep_list = df_epl[['Values']].copy()
dep_list = dep_list.dropna()
dep_list = dep_list.drop_duplicates()
dlist = dep_list['Values'].tolist()

# 直接用isin生成布尔值,转成"YES"/空字符串
df_existing['Key'] = df_existing['Code'].isin(dlist).map({True: 'YES', False: ''})

如果一定要用循环(不推荐)

要是你非要保留循环逻辑,那得用loc来定位行修改原DataFrame,而不是修改副本:

df_existing['Key'] = ""
for l in dlist:
    # 直接定位Code等于l的行,设置Key为YES
    df_existing.loc[df_existing['Code'] == l, 'Key'] = "YES"

这种写法比你原来的双重循环效率高很多,因为它是利用Pandas的矢量化操作定位,而不是逐行遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:30:09