如何在Python中为DataFrame添加由空列表组成的列?
在Pandas DataFrame中新增含独立空列表的列
没问题,这事儿挺常见,但得注意一个容易踩的坑——别直接用重复的空列表赋值,不然所有行的列表都会共享同一个引用,改一个全变。下面给你两种靠谱的实现方法:
方法1:列表推导式(推荐,效率更高)
用列表推导式为每一行生成独立的空列表,确保每个列表都是完全独立的对象:
import pandas as pd # 先拿个10行的示例DataFrame举例子 df = pd.DataFrame({'existing_column': range(10)}) # 新增列,每个元素都是独立空列表 df['new_list_column'] = [[] for _ in range(len(df))]
方法2:apply函数(逻辑更直观)
如果觉得列表推导式有点抽象,用apply逐行生成空列表也可以,可读性更强:
df['new_list_column'] = df.apply(lambda _: [], axis=1)
避坑提醒:千万别这么写!
很多人一开始会想偷懒用[[]]*len(df),但这会导致所有行的列表共享同一个内存引用——你给某一行的列表加元素,所有行的列表都会跟着变:
# 错误示范! df['bad_list_column'] = [[]]*len(df) df.loc[0, 'bad_list_column'].append('oops') print(df['bad_list_column']) # 所有行的列表里都有'oops',这绝对不是你想要的
后续追加元素的用法
新增列之后,你可以直接通过loc定位行,给对应的列表追加元素:
# 给第2行(索引为1)的列表追加单个元素 df.loc[1, 'new_list_column'].append('first item') # 给第5行(索引为4)的列表追加多个元素 df.loc[4, 'new_list_column'].extend([100, 200, 300])
内容的提问来源于stack exchange,提问作者Prossenjit Chanda
相关产品推荐
相关产品推荐

