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