2015-11-04 93 views
3

當數據框是多索引時,是否可以在熊貓中創建多個新列?我想在bar2超列下添加兩個新列onetwo。是這樣的...在多索引熊貓數據框中創建多個新列

import pandas as pd 
import numpy as np 
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo'], 
      ['one', 'two', 'one', 'two', 'one', 'two']] 

index = pd.MultiIndex.from_arrays(arrays, names=['first', 'second']) 
df = pd.DataFrame(np.random.randn(3, 6), index=[1, 2, 3], columns=index) 

df["bar2", ["one", "two"]] = np.random.randn(3, 2) 

我知道我可以使用

df["bar2", "one"] = np.random.randn(3,1) 
df["bar2", "two"] = np.random.randn(3,1) 

有沒有同時進行這兩項可以更快地創建逐一?

回答

1
In [270]: 
df_to_add = pd.DataFrame(np.random.randn(3,2) , columns=[['bar2' , 'bar2'] , ['one' , 'two']] , index = [1 , 2 , 3]) 
df_to_add 
Out[270]: 
      bar2 
     one two 
1 0.119730 -0.265579 
2 1.777329 -1.178128 
3 -2.700409 0.457430 

In [271]:  
pd.concat([df , df_to_add] , axis = 1) 
+0

這是錯綜複雜的,但它的工作原理,這是我所需要的。希望他們將來能夠做到這一點。 – tlnagy