2016-08-01 110 views
1

設置多列值I具有MultiColumned數據幀如下:熊貓:基於平板圓柱值

Out[1]: 
Empty DataFrame 
Columns: [(price, mean), (price, mom_2), (units, mean), (units, mom_2)] 
Index: [] 

我有mean一些(平)值,這是我想投入priceunits

>>> value 
Out[2]: 
price 0.0 
units 0.0 
dtype: float64 

我覺得要走的路是

resultsDf.loc[idx, pd.IndexSlice[:, 'mean']] = value 

但它不是,因爲值不接管:

resultsDf.loc 
            price  units  
             mean mom_2 mean mom_2 
(desc, foo) (desc, bar)       
1500002071    65   NaN NaN NaN NaN 

我想,在進一步檢查中,問題是,儘管我選擇基於第一級,我仍然有一個多層次左手側,我不能從單一層次的右側合併/粘貼到:

>>> resultsDf.loc[idx, pd.IndexSlice[:, 'mean']] 
Out[5]: 
price mean NaN 
units mean NaN 
Name: (1500002071, 65), dtype: object 
>>> value 
Out[6]: 
price 0.0 
units 0.0 
dtype: float64 

什麼是去這裏的路?

回答

1

你是對的,與IndexSlice選擇保持水平。我不知道這裏有任何整潔的方法(如果它存在的話)。

一個安全的解決方法是重新索引系列:

value.index = pd.MultiIndex.from_product([value.index, ['mean']]) 
resultsDf.loc[idx] = value 

或者(但可能是危險的),如果你確信在框架和行列系列中的訂單是相同的,那麼這也應該工作:

resultsDf.loc[idx, pd.IndexSlice[:, 'mean']] = value.tolist()