2016-05-10 13 views
1

私はPythonの初心者です。共通のExcelタスクを複製するためにPythonを使いたいと思います。そのような質問に既に回答している場合は、私に知らせてください。私はそれを見つけることができませんでした。私は次のことを生成するために、ピボットテーブルを使用することができ、Excelでピボットを使用したPandas KeyError

Date Stage SubStage Value 
12/31/2015 1.00 a 0.896882891 
1/1/2016  1.00 a 0.0458843 
1/2/2016  1.00 a 0.126805588 
1/3/2016  1.00 b 0.615824461 
1/4/2016  1.00 b 0.245092069 
1/5/2016  1.00 c 0.121936318 
1/6/2016  1.00 c 0.170198128 
1/7/2016  1.00 c 0.735872415 
1/8/2016  1.00 c 0.542361912 
1/4/2016  2.00 a 0.723769247 
1/5/2016  2.00 a 0.305570257 
1/6/2016  2.00 b 0.47461605 
1/7/2016  2.00 b 0.173702623 
1/8/2016  2.00 c 0.969260251 
1/9/2016  2.00 c 0.017170798 

:私は、次のパンダのデータフレーム(データを)持っている

excel pivot table using 'data'

Pythonで次の操作を実行するのが妥当と思われます。

data.pivot(index='Date',columns = ['Stage','SubStage'],values = 'Value') 

しかし、それが生成します。

KeyError: 'Level Stage not found' 

何がありますか?

+1

あなたの列ラベルには空白を末尾またはリードしているのですか? 'data.columns'で検査して確認してください。 –

+0

彼らはそうではありません: data.columns インデックス(['日付'、 'ステージ'、 'サブステージ'、 '値']、dtype = 'オブジェクト') – trob

答えて

2

.pivot_tableを入力してください。.pivotではありません。

import pandas 
from io import StringIO 

x = StringIO("""\ 
Date Stage SubStage Value 
12/31/2015 1.00 a 0.896882891 
1/1/2016  1.00 a 0.0458843 
1/2/2016  1.00 a 0.126805588 
1/3/2016  1.00 b 0.615824461 
1/4/2016  1.00 b 0.245092069 
1/5/2016  1.00 c 0.121936318 
1/6/2016  1.00 c 0.170198128 
1/7/2016  1.00 c 0.735872415 
1/8/2016  1.00 c 0.542361912 
1/4/2016  2.00 a 0.723769247 
1/5/2016  2.00 a 0.305570257 
1/6/2016  2.00 b 0.47461605 
1/7/2016  2.00 b 0.173702623 
1/8/2016  2.00 c 0.969260251 
1/9/2016  2.00 c 0.017170798 
""") 

df = pandas.read_table(x, sep='\s+') 
xtab = df.pivot_table(index='Date', columns=['Stage','SubStage'], values='Value') 
print(xtab.to_string(na_rep='--')) 

そして、それは私を与える:

Stage   1.0       2.0      
SubStage   a   b   c   a   b   c 
Date                 
1/1/2016 0.045884  --  --  --  --  -- 
1/2/2016 0.126806  --  --  --  --  -- 
1/3/2016   -- 0.615824  --  --  --  -- 
1/4/2016   -- 0.245092  -- 0.723769  --  -- 
1/5/2016   --  -- 0.121936 0.305570  --  -- 
1/6/2016   --  -- 0.170198  -- 0.474616  -- 
1/7/2016   --  -- 0.735872  -- 0.173703  -- 
1/8/2016   --  -- 0.542362  --  -- 0.969260 
1/9/2016   --  --  --  --  -- 0.017171 
12/31/2015 0.896883  --  --  --  --  -- 
+0

これは役に立ちます。一般に、同意されたベストプラクティスをピボットするのではなく、pivot_tableですか?同じコンセプトのために世界に2つの機能があるのはなぜですか? – trob

+0

彼らはさまざまな目的を果たしていますが、私は彼らが何であるか教えてくれませんでした。私はいつもこのようなことをするためにマルチレベルのインデックスで 'stack/unstack'を行います。 @trob –

+0

優れています。ありがとうございました! – trob

関連する問題