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

Pandas如何仅替换DataFrame中值为空列表的单元格

Pandas按行替换列中空列表值实现方案

原始示例数据

测试DataFrame构造代码如下:

import pandas as pd

df = pd.DataFrame({
    'variations_list1': [["yellow","ornage"], ["xl","xxl"], ["Burger","pizza"]],
    'variations_list2': [[], [], ["$25","$30"]]
})

原始数据打印效果:

variations_list1          variations_list2
0  ["yellow","ornage"]                        []
1         ["xl","xxl"]                        []
2  ["Burger","pizza"]               ["$25","$30"]

处理逻辑

仅替换variations_list2列中值为空列表的单元格,取当前行variations_list1的列表值填充,非空单元格保留原值。

可直接运行的实现代码

通过apply按行遍历判断即可,通过判断列表长度是否为0识别空列表,兼容性最强,不会触发pandas的真值判断报错:

df['variations_list2'] = df.apply(
    lambda row: row['variations_list1'] if len(row['variations_list2']) == 0 else row['variations_list2'],
    axis=1
)

避坑提示

  • 不要尝试直接用df['variations_list2'] == []做整列条件筛选,列表是可变对象,pandas对存储列表的列做整列等值判断时会抛出ValueError: The truth value of a Series is ambiguous报错。

处理后结果

执行代码后打印DataFrame,输出完全符合预期:

variations_list1          variations_list2
0  ["yellow","ornage"]        ["yellow","ornage"]
1         ["xl","xxl"]               ["xl","xxl"]
2  ["Burger","pizza"]              ["$25","$30"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:36:47