我有一个DataFrame df,我尝试了ddf = df.describe()
,并得到了如下所示的结果。
我想据此作报告,
所以我想将平均值/最大值/最小值分开并放在我的Word文档中。
我尝试了多种方法,但除非我将ddf放平,否则无法基于item
对其进行过滤。
Absmm Xmm Ymm Zmm
Node item
269.0 count 2.600000e+01 26.000000 26.000000 26.000000
mean -5.150000e-02 0.005423 0.027385 -0.057077
std 9.984077e-02 0.012113 0.076432 0.090868
min -2.820000e-01 -0.014000 -0.012000 -0.265000
25% -7.250000e-02 -0.000750 -0.001750 -0.072250
50% -8.000000e-03 0.005000 0.000000 -0.013500
75% 6.750000e-03 0.009750 0.012500 0.002500
max 6.600000e-02 0.048000 0.288000 0.052000
275.0 count 2.600000e+01 26.000000 26.000000 26.000000
mean -8.688462e-02 -0.011000 0.035615 -0.053077
std 1.540525e-01 0.017797 0.113538 0.125961
min -5.990000e-01 -0.060000 -0.016000 -0.600000
25% -1.015000e-01 -0.020500 0.000000 -0.078500
50% -2.400000e-02 -0.006500 0.001000 -0.019500
75% -4.250000e-03 -0.001000 0.013250 0.001000
max 5.300000e-02 0.034000 0.567000 0.112000
我尝试了
dmean = ddf.loc[ddf.index[1] == 'mean']
或类似的方法,但我就是无法得到我想要的。
如何通过过滤获取单独的DataFrame中每个节点的平均值?
最佳答案
您非常接近-使用Index.get_level_values
:
#select by position - second level of MultiIndex
dmean = ddf.loc[ddf.index.get_level_values(1) == 'mean']
#select by level name
dmean = ddf.loc[ddf.index.get_level_values('item') == 'mean']
最好使用
DataFrame.xs
:dmean = ddf.xs('mean', axis=0, level=1)