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

在Pandas中遍历列表填充列遇TypeError,求正确实现方案

在Pandas中遍历列表填充列的问题解决

咱们先拆解下你遇到的问题和代码里的问题:

错误原因分析

你用df["A"].apply(fill_row)的时候,apply会把A列的每个列表元素(比如[5,6,7])单独传给fill_row函数,但你的fill_row函数却把这个参数当成了整个DataFrame来操作,试图访问df["A"]——这时候参数df其实是一个普通列表,自然会报错TypeError: list indices must be integers or slices, not str。另外,你函数里写的df["B"] == 4是比较操作,不是赋值,应该用单等号=才行。

正确实现方法

你的需求看起来是:如果A列的列表里包含数字4,就给B列赋值4,否则赋值0。我们可以针对单个列表来写处理逻辑,再用apply批量处理:

方法1:自定义函数

import pandas as pd

# 初始化DataFrame
df = pd.DataFrame([{'A': [5, 6, 7], 'B': ""}, {'A': [3, 4, 7], 'B': ""}, {'A': [3, 0, 4], 'B': ""}])

# 定义处理单个列表的函数
def get_b_value(lst):
    return 4 if 4 in lst else 0

# 应用到A列,填充B列
df["B"] = df["A"].apply(get_b_value)

方法2:用lambda简化

如果逻辑简单,也可以直接用lambda函数一行搞定:

df["B"] = df["A"].apply(lambda x: 4 if 4 in x else 0)

验证结果

执行后你会得到期望的DataFrame:

A  B
0  [5, 6, 7]  0
1  [3, 4, 7]  4
2  [3, 0, 4]  4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:22:50