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

如何通过列名而非索引访问DataFrame.itertuples中的元素?

用列名访问itertuples元素的可行方案

当然可以通过列名访问itertuples()返回的元素,不过要注意itertuples()返回的是namedtuple对象,不是字典,所以不能用i["Custom ID"]这种字典式索引,得用属性访问的写法,具体分两种情况处理:

情况1:调整列名(推荐)

如果可以修改DataFrame的列名,把带空格的列名改成合法的标识符(比如把"Custom ID"改成"Custom_ID"),就能直接用点号访问属性:

先修改列名:

df_1 = df_1.rename(columns={"Custom ID": "Custom_ID"})

再用属性名进行比较:

for i in df_1.itertuples():
    for j in df_cs.itertuples():
        if i.Custom_ID == j.Nodo_Cod:
            print("yes")
            break
        else:
            print("no")

情况2:保留原列名,用getattr方法

如果不想修改列名,Python的getattr()函数可以用来访问带空格或特殊字符的属性:

for i in df_1.itertuples():
    for j in df_cs.itertuples():
        if getattr(i, "Custom ID") == j.Nodo_Cod:
            print("yes")
            break
        else:
            print("no")

补充说明

  • itertuples()的性能比iterrows()更好,尤其是处理大DataFrame时,优先推荐上述两种基于itertuples()的方案。
  • 如果一定要用字典式索引,可以改用df.iterrows(),它返回(index, Series)对,Series支持方括号列名访问,但性能会差一些。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:37:20