使用两个标头熊猫访问熊猫数据框列

时间:2020-05-22 23:54:52

标签: python pandas

我使用groupbypd.cut创建了一个数据框,以计算bin中元素的均值,std和数量。我使用了agg(),这是我使用的命令:

df_bin=df.groupby(pd.cut(df.In_X, ranges,include_lowest=True)).agg(['mean', 'std','size'])

df_bin看起来像这样:

                 X                  Y
                 mean   std size   mean         std  size
In_X                    
(10.424, 10.43] 10.425  NaN  1      0.003786    NaN   1
(10.43, 10.435] 10.4    NaN  0      NaN         NaN   0

我想为第一个标头mean创建一个具有X值的数组。如果我没有两个标头级别,则将使用类似以下内容的

mean=np.array(df_bin['mean'])

但是如何使用两个标题呢?

2 个答案:

答案 0 :(得分:1)

我们可以做到

df_bin.stack(level=0)['mean'].values

答案 1 :(得分:1)

此文档非常适合您:https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html

要回答您的问题,如果只需要特定的列:

mean = np.array(df_bin['X', 'mean'])

但是,如果您想切片到第二级:

mean = np.array(df_bin.loc[:, (slice(None), 'mean')])

或者:

mean = np.array(df_bin.loc[:, pd.IndexSlice[:, 'mean']])