2017-08-11 20 views
1

私は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内のすべてのノードの平均値を取得するにはどうすればよいですか?

答えて

2

あなたは非常に接近している - Index.get_level_valuesを使用します。

dmean = ddf.xs('mean', axis=0, level=1) 
+1

うわー、それはクールだ:

#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を使用しています。できます。内部で何が起こったのか分かりませんが、DataFrameについてより多くの関数/メソッド/属性がわかっているようであれば、それだけ多くのことができます.-D。 – jetorz

関連する問題