2017-09-11 28 views
1

私は、日付と「成果」によってグループ化されているパンダのデータフレームを持っている:Pandas groupby DataFrameをフラット化するには?

api_logs.groupby([api_logs.index.date, 'Outcome']).size() 
   Outcome 
2017-04-22 Success  7 
2017-04-24 Failure  32 
      Success  59 
2017-04-25 Failure  23 
      Success  91 
2017-04-26 Failure  1 
      Success  59 
2017-04-27 Failure  3 
      Success  1 
2017-04-28 Failure  1 
      Success  2 
2017-04-29 Success  3 
2017-05-03 Failure  38 
2017-05-04 Failure  6 
      Success 727

それは以下のように構成されているように私は、ネストされたデータをフラット化するにはどうすればよいですか?

   Failure Success 
2017-04-22     7 
2017-04-24  32   59 
2017-04-25  23   91 
2017-04-26  1   59 
2017-04-27  3   1 
2017-04-28  1   2 
2017-04-29  3 
2017-05-03  38 
2017-05-04  6  727

マイエンドの目標は、チャートに一緒に失敗と成功をプロットすることであるので、おそらく異なるアプローチが全く存在しているのですか?リシェイプ用

答えて

6

使用unstack

df = api_logs.groupby([api_logs.index.date, 'Outcome']).size().unstack() 
print (df) 
Outcome  Failure Success 
2017-04-22  NaN  7.0 
2017-04-24  32.0  59.0 
2017-04-25  23.0  91.0 
2017-04-26  1.0  59.0 
2017-04-27  3.0  1.0 
2017-04-28  1.0  2.0 
2017-04-29  NaN  3.0 
2017-05-03  38.0  NaN 
2017-05-04  6.0 727.0 

また、パラメータfill_valueによって0からNaN秒を置き換えることも可能である:

df = api_logs.groupby([api_logs.index.date, 'Outcome']).size().unstack(fill_value=0) 

print (df) 
Outcome  Failure Success 
2017-04-22  0  7 
2017-04-24  32  59 
2017-04-25  23  91 
2017-04-26  1  59 
2017-04-27  3  1 
2017-04-28  1  2 
2017-04-29  0  3 
2017-05-03  38  0 
2017-05-04  6  727 
+0

素晴らしい例を! 'fill_value'で細部に注意を払ってくれてありがとう:-) –

+0

うれしいことに、うれしい一日です! – jezrael

関連する問題