2016-08-01 75 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()