使用multiindex同时添加多个列

时间:2019-04-19 15:52:19

标签: python pandas multi-index

我有一个具有可变列数的数据框,并且在MultiIndex中处理了这些列。我正在尝试将多个列添加到同一MultiIndex结构中

我试图添加新列,就像如果只有一列但不起作用

我已经尝试过了:

df = pd.DataFrame(np.random.rand(4,2), columns=pd.MultiIndex.from_tuples([('plus_zero', 'A'), ('plus_zero', 'B')]))

df['plus_one'] = df['plus_zero'] + 1

但是我得到ValueError: Wrong number of items passed 2, placement implies 1

原始的df应该看起来像这样:

  plus_zero          
          A         B
0  0.602891  0.701130
1  0.395749  0.960206
2  0.268238  0.140606
3  0.165802  0.971707

我想要的结果:

  plus_zero            plus_one          
          A         B         A         B
0  0.602891  0.701130  1.602891  1.701130
1  0.395749  0.960206  1.395749  1.960206
2  0.268238  0.140606  1.268238  1.140606
3  0.165802  0.971707  1.165802  1.971707

1 个答案:

答案 0 :(得分:2)

使用pd.concat

您必须指定新列的名称以及axis=1axis='columns'

pd.concat([df.loc[:,'plus_zero'],df.loc[:,'plus_zero']+1],
          keys=['plus_zero','plus_one'],
          axis=1)
  plus_zero            plus_one          
          A         B         A         B
0  0.049735  0.013907  1.049735  1.013907
1  0.782054  0.449790  1.782054  1.449790
2  0.148571  0.172844  1.148571  1.172844
3  0.875560  0.393258  1.875560  1.393258