如何为DataFrame添加元素为20×20零数组的列
解决方案
问题出在你直接把单个20×20的零矩阵赋值给列,pandas会把这个二维数组当成长度为20的序列,和DataFrame的26651行长度不匹配,所以报错。要让每一行都对应一个独立的20×20零数组,试试下面几种方法:
- 列表推导式(推荐,每个数组都是独立的):
import numpy as np # 给df新增matrix列,每个元素是20×20零数组 df['matrix'] = [np.zeros((20, 20)) for _ in range(len(df))]
- 使用
apply方法:
df['matrix'] = df.apply(lambda _: np.zeros((20, 20)), axis=1)
- 用
pd.Series构造:
df['matrix'] = pd.Series([np.zeros((20, 20))]*len(df), index=df.index)
注意:第三种方法里的
[...]*len(df)会让所有元素指向同一个数组对象,如果后续需要修改某一行的数组,会影响所有行,所以优先选前两种方法。
内容的提问来源于stack exchange,提问作者ChipperBaker
相关产品推荐
相关产品推荐

