将数组分配给DataFrame时形状不匹配

时间:2018-08-31 12:04:32

标签: python pandas dataframe

我有一个声明为3列的空数据框:

df = pd.DataFrame(columns=['colA', 'colB', 'colC'])

我有一个Nx2数组:

data = np.ones((100,2))

我想将数据数组放在数据框的两列(colB和colC)中,所以我尝试了以下操作:

df[["colB","colC"]] = data

但是我收到形状不匹配错误:

ValueError: shape mismatch: value array of shape (100,2) could not be broadcast to indexing result of shape (2,0)

我可以逐列进行:

df["colB"] = data[:,0]
df["colC"] = data[:,1]

是否有将数组分配给数据框的直接方法?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为可以在分配之前使用DataFrame构造函数:

df = pd.DataFrame(columns=['colA', 'colB', 'colC'])
df[["colB","colC"]] = pd.DataFrame(data)

或者如果要添加空列:

data = np.ones((100,2))

df1 = pd.DataFrame(data, columns=["colB","colC"]).reindex(columns=['colA', 'colB', 'colC'])

print (df1.head())
   colA  colB  colC
0   NaN   1.0   1.0
1   NaN   1.0   1.0
2   NaN   1.0   1.0
3   NaN   1.0   1.0
4   NaN   1.0   1.0