代码之家  ›  专栏  ›  技术社区  ›  Sembei Norimaki

将数组分配给数据帧时形状不匹配

  •  1
  • Sembei Norimaki  · 技术社区  · 7 年前

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

    我有一个Nx2阵列:

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

    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 回复  |  直到 7 年前
        1
  •  0
  •   jezrael    7 年前

    我认为这是可能的 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