pandas将指定多列所有值替换为空列表的高效实现方法
pandas批量将指定列所有值替换为空列表的高效实现
核心方案
直接构造与DataFrame行数一致的独立空列表序列,批量赋值给目标列即可,无需调用apply,性能远高于逐行处理方案:
# 指定需要修改的列 target_cols = ['A', 'B', 'C'] # 逐列赋值独立空列表 for col in target_cols: df[col] = [[] for _ in range(len(df))]
原理解释
你之前使用assign无法直接赋值空列表的原因是,pandas会默认将传入的列表尝试按行展开匹配长度,空列表长度为0和DataFrame行数不匹配就会报错。上述方法为每一行都生成了一个独立的空列表对象,完全符合pandas的赋值规则,赋值后所有目标列的单元格都会变成空列表,其余列保持原值不变。
避坑提示
不要使用[[]] * len(df)的写法生成空列表序列:该写法生成的所有空列表都是同一个对象的引用,后续修改任意一行的列表值会导致所有行同步变化,存在隐蔽BUG。
内容的提问来源于stack exchange,提问作者oakca
相关产品推荐
相关产品推荐

