Python 将多列同时添加到多索引数据帧

Python 将多列同时添加到多索引数据帧,python,pandas,Python,Pandas,我有一个数据帧多索引数据帧df First Foo Bar Second Begin Begin 1 5 1 2 4 4 3 6 6 我想添加两个同名的列 First Foo Bar Second Begin End Begin End 1 5 1 1 2 2 4

我有一个数据帧多索引数据帧
df

First    Foo     Bar
Second   Begin   Begin
1        5       1
2        4       4
3        6       6
我想添加两个同名的列

First    Foo             Bar
Second   Begin   End     Begin   End
1        5       1       1       2       
2        4       5       4       4       
3        6       7       6       7       
从该来源(
new
):

我尝试了类似于
df[:]=new[:]
的方法,但这只返回了NaN

另一种方法是使用类似for循环的东西,但这不是Pandas方法。搜索网页并没有给我任何解决这个问题的见解

如何向多索引数据帧的每个第一级添加具有相同名称和形状的新列

编辑:

这种方法
df[('Foo','End')]=new['Foo']df[('Bar','End')]=new['Bar']]
不是一种选择,因为在我的实际问题中,没有两列需要添加,而是数百列。

  • 多列名称作为
    元组传递
    ,如
    df[('Foo','End')]
将pamadas导入为pd
#测试数据
col=pd.MultiIndex.from_数组([['Foo','Bar',['Begin','Begin']],name=['First','Second']))
df=pd.DataFrame([[5,1],[4,4],[6,6]],columns=col)
new=pd.DataFrame({'Foo':[1,5,7],'Bar':[2,4,7]})
#写新专栏
df[('Foo','End')]=新的['Foo']
df[('Bar','End')]=新的['Bar']
#显示(df)
第一个foobar foobar
第二次开始结束
0          5     1   1   2
1          4     4   5   4
2          6     6   7   7
对于许多专栏
  • col
    new
    中的列名必须与
    df
    中的顶级列名相对应
对于新列中的列:
df[(col,'新col name')]=新[col]

为什么要使用多索引?也许有一个更简单的方法来实现你想要的这个回答你的问题@Trenton McKinney不我的问题不是选择而是插入columns@anon01更简单的方法是使用列代替多索引
First    Foo    Bar
1        1      2
2        5      4
3        7      7