2016-11-28 10 views
1

私は、csvに格納されたデータをpandasデータフレームに読み込むと、実際のファイルにはもっと多くの列がありますが、これは問題を説明するのに十分近い数値です。パンダデータフレームから累積合計と転置を計算する

 Treatment time 
0   A  12.63 
1   A  83.28 
2   A  83.54 
3   B  85.04 
4   B  85.79 
5   A  131.78 

私は、24時間のビンで各治療の数でビンしてから、累積合計を生成したいと考えています。私ができる、その後

 Treatment time categories 
0   A  12.63  0 
1   A  83.28  72 
2   A  83.54  72 
3   B  85.04  72 
4   B  85.79  72 
5   A  131.78  120 

を::

cat_sum = df.groupby(['Treatment', 'categories'])['categories'].size() 
cat_sum = cat_sum.groupby(level=[0]).cumsum().reset_index(name='cum_sum') 

形式のデータフレームを与えるために:

生成
bin_values = np.arange(0, 264, 24) 
group_names = np.arange(0, 240, 24) 

df['categories'] = pd.cut(df['time'], bin_values, labels=group_names) 

:私はこれを行う

Treatment categories cum_sum 
0  A   0   1 
1  A   72   3 
2  A   120   4 
3  B   72   2 

でこの時点で私は立ち往生しています。私はこれを取ると、既存の可視化を使用するには、このようなものを作ることを望む:

Treatment 0 24 48 72 96 120 144 etc ... 

    A  1 1 1 3 3 4 4 
    B  0 0 0 2 2 2 2 

だから、基本的に各24時間の期間で、各処理によって移調や実行中の合計を与えるために欠けているカテゴリに再度追加します。私は時間を捜してきたが、私が必要としているもののような遠隔地でも何も見つけられなかった。おそらくこれは間違った方向に向かっているということだ。

私の質問は、私が必要なものを作り出すために家を回っているのですか、それとも私を逃した最後のステップですか?どんな助けもありがとう。

答えて

0

df.pivotを使用してください。

あなたの例df使用:この

Treatment categories cum_sum 
0  A   0   1 
1  A   72   3 
2  A   120   4 
3  B   72   2 

In [1]: df.pivot(index='Treatment', columns='categories', values='cum_sum') 
Out[1]: 
categories 0 72 120 
Treatment     
A   1.0 3.0 4.0 
B   NaN 2.0 NaN 
+0

そして:http://stackoverflow.com/q/39113399/3765319 – Kartik

+0

これを解決し、上記の組み合わせを。ありがとう。 – Pete