【问题标题】:Join an empty pandas DataFrame with a Multiindex DataFrame使用 Multiindex DataFrame 加入一个空的 pandas DataFrame
【发布时间】:2018-12-31 14:53:06
【问题描述】:

我想在循环中构建一个大熊猫 DataFrame。在第一次迭代中,DataFrame df1 仍然是空的。当我将 df1 与具有 MultiIndex 的 df2 一起加入时,索引会以某种方式被压扁。

df1 = pd.DataFrame(index=range(6))
df2 = pd.DataFrame(np.random.randn(6, 3),
                   columns=pd.MultiIndex.from_arrays((['A','A','A'], 
                                                      ['a', 'b', 'c'])))
df1[df2.columns] = df2

df1
     (A, a)    (A, b)    (A, c)
0 -0.673923  1.392369  1.848935
1  1.427368  0.042691  0.130962
2 -0.258589  0.216157  0.196101
3 -1.022283  1.312113 -0.770108
4  0.511127 -0.633477 -0.229149
5 -1.364237  0.713107  2.124274

我希望有一个完整的 MultiIndex 的 DataFrame,如下所示:

          A                    
          a         b         c
0 -0.673923  1.392369  1.848935
1  1.427368  0.042691  0.130962
2 -0.258589  0.216157  0.196101
3 -1.022283  1.312113 -0.770108
4  0.511127 -0.633477 -0.229149
5 -1.364237  0.713107  2.124274

我做错了什么?

【问题讨论】:

  • 你的熊猫版本是什么?它对我有用
  • 对不起,我粘贴了一些愚蠢的东西。请再看一下更新后的问题。
  • 为什么要将空数据框与另一个数据框连接起来?
  • @VineetJain 想象一下这是循环的第一次迭代,每次迭代都会添加更多列。

标签: python pandas dataframe


【解决方案1】:

当我们为一个简单索引赋值时,多重索引并不总是被识别,所以

df1 = pd.DataFrame(index=range(6),columns=pd.MultiIndex.from_arrays([[],[]]))
df1[df2.columns] = df2
df1
Out[697]: 
          A                    
          a         b         c
0 -0.755397  0.574920  0.901570
1 -0.165472 -1.865715  1.583416
2 -0.403287  1.358329  0.706650
3  0.028019  1.432543 -0.586325
4 -0.414851  0.825253  0.745090
5  0.389917  0.940657  0.125837

【讨论】:

    猜你喜欢
    • 2018-08-20
    • 2015-03-29
    • 1970-01-01
    • 2019-03-22
    • 2019-05-20
    • 2017-08-25
    • 2016-11-06
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多