我使用groupby
和pd.cut
创建了一个数据帧来计算箱内元素的平均值、标准和数量。我使用了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
我想创建一个数组,其中包含第一个标头X
的mean
值。如果我没有两个标头级别,我会使用类似的东西:
mean=np.array(df_bin['mean'])
但是如何使用这两个标头来做到这一点呢?
本文档将为您提供很好的服务: 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']])
我们可以做
df_bin.stack(level=0)['mean'].values