如何初始化单元格取值为空列表的pandas DataFrame
初始化pandas DataFrame为全空列表单元格实现方案
正确实现方法
- 方法1:直接初始化指定行列的空列表DataFrame
该方式生成的每个空列表都是独立对象,修改单个单元格不会联动其他单元格:
import pandas as pd # 可自定义行数、列名 row_num = 2 columns = ["A", "B"] df = pd.DataFrame( [[[] for _ in range(len(columns))] for _ in range(row_num)], columns=columns ) # 如需自带示例中的ix列,可额外执行:df = df.reset_index(names="ix")
- 方法2:给已有DataFrame全量替换为独立空列表
如果已经存在建好结构的DataFrame,可以直接用apply批量替换:
df = df.apply(lambda col: [[] for _ in range(len(col))])
避坑提醒
不要使用如下写法:
# 错误示例!所有空列表指向同一引用,修改一个会全量变更 df = pd.DataFrame([[[]]*len(columns)]*row_num, columns=columns)
效果验证
执行修改单个单元格的操作验证独立性:
df.loc[0, "A"].append(1) print(df)
输出结果:
ix A B 0 0 [1] [] 1 1 [] []
完全符合预期的初始化效果,仅修改的目标单元格列表有变更。
内容的提问来源于stack exchange,提问作者3awny
相关产品推荐
相关产品推荐

