2016-11-28 6 views
2

このトピックについてはいくつか質問がありますが、私の場合は役に立たないようです。 http://pastebin.com/rP7tPDsepandas pivot_tableのサブセットを選択してください

私のように、ピボットテーブルを作成しています:

これは、関心のcsvファイルである:ここで私が何をしたいのダウン易しく書き直さバージョンです

piv = pd.read_csv("test.csv",delimiter = "\s+").pivot_table('z','x','y') 

は、これは

y 0.0 1.0 1.3 2.0 
x 
0.0 1.0 5.0 NaN 4.0 
1.0 3.0 4.0 NaN 6.0 
1.5 NaN NaN 7.0 NaN 
2.0 3.0 5.0 NaN 7.0 
を返します。

この配列のスライスをpivot_tableとして見つけたいと考えています。

y 1.3 2.0 
x 
0.0 NaN 4.0 
1.0 NaN 6.0 

xとyの値に基づきます。後でNaNを処理して処理することもできます。大いに感謝します。

EDIT:質問をより具体的に更新する。

Iが条件で、カラムZ「」によって示され、「X」と「Y」によって索引付け値を持つピボットテーブルを抽出するために探しているもの:任意間

  • 全てのx値XMINとXMAX
  • 上で定義したように、私のような何かをしたい

、PIVから任意のYMINとYMAXの間のすべてのyの値:

を10
piv.loc[(piv.y <= 2.0) & 
(piv.y >= 1.3) & 
(piv.x >= 0.0) & 
(piv.x <= 1.2)] 

これで私は上記の答えを得ることができます。 また、私がここに投稿しなかった実際のデータセットには、もっと多くの列があります。 'x'、 'y'、 'z'はその一部です。

答えて

2

データフレームをコピーしたとき、列は文字列で、行は浮動小数点でした。
はfloatとして今

df.columns = df.columns.astype(float) 

することができますpd.IndexSlice

df.loc[pd.IndexSlice[0:1], pd.IndexSlice[1.3:2]] 

enter image description here

+0

おかげで列を取得するには、より多くの列がある場合、これは失敗しないでしょうか?また、どのように範囲を選ぶでしょうか? (たとえば、[1,3]と[0,2]の間にあるxの間にあるxのすべての値) – triplebig

+0

私はあなたが望むものを理解していませんか? – piRSquared

+0

質問をより具体的に更新しました。これは役に立ちますか? – triplebig

関連する問題