Pandas:在MultiColumn对象上创建视图

时间:2016-02-29 14:47:53

标签: python pandas

我正在尝试在多列表上设置一个值。但是,我似乎正在处理副本,因为值不会持续存在:

In[4]:     tIndex = np.array([32, 34, 134, 234, 334, 434])
    topColumns = ['homogenous', 'heterogenous']
    mus = ['mu_el', 'mu_eh', 'mu_ul', 'mu_uh']
    bottomColumns = mus + ['Jl', 'Jh', 'v', 'u']
    arrays = [topColumns, bottomColumns]
    #tuples = list(zip(*arrays))
    columns = pd.MultiIndex.from_product(arrays)

    df = pd.DataFrame(columns=columns, index=tIndex)
In[6]: df.loc[32, 'homogenous']['v'] = 1
In[8]: df.loc[32, 'homogenous']['v']
Out[8]: nan

.loc[]内的多索引的情况很简单,并在文档中广泛提及。但是,如何使用具有多列数据框的视图?

1 个答案:

答案 0 :(得分:1)

您需要传递元组来表示不同的级别:

In [125]:
df.loc[32, ('homogenous','v')] = 1
df

Out[125]:
    homogenous                                       heterogenous              \
         mu_el mu_eh mu_ul mu_uh   Jl   Jh    v    u        mu_el mu_eh mu_ul   
32         NaN   NaN   NaN   NaN  NaN  NaN    1  NaN          NaN   NaN   NaN   
34         NaN   NaN   NaN   NaN  NaN  NaN  NaN  NaN          NaN   NaN   NaN   
134        NaN   NaN   NaN   NaN  NaN  NaN  NaN  NaN          NaN   NaN   NaN   
234        NaN   NaN   NaN   NaN  NaN  NaN  NaN  NaN          NaN   NaN   NaN   
334        NaN   NaN   NaN   NaN  NaN  NaN  NaN  NaN          NaN   NaN   NaN   
434        NaN   NaN   NaN   NaN  NaN  NaN  NaN  NaN          NaN   NaN   NaN   


    mu_uh   Jl   Jh    v    u  
32    NaN  NaN  NaN  NaN  NaN  
34    NaN  NaN  NaN  NaN  NaN  
134   NaN  NaN  NaN  NaN  NaN  
234   NaN  NaN  NaN  NaN  NaN  
334   NaN  NaN  NaN  NaN  NaN  
434   NaN  NaN  NaN  NaN  NaN  

它看起来你正在进行链式索引