在MultiColumn对象上创建

在MultiColumn对象上创建

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

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[]中多索引的情况很简单,并在文档中进行了广泛提及。但是,如何处理具有多列数据框的视图?

最佳答案

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

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


看来您正在执行链式索引

关于python - Pandas :在MultiColumn对象上创建 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35702482/

10-12 23:36