2017-08-20 6 views
3

、何か以下のようにパンダの列の値を追加:だけ私はパンダのデータフレームに取り組んでいます特定の指標

id  vals 
0 1   11 
1 1   5.5 
2 1   -2 
3 1   8 
4 2   3 
5 2   4 
6 2   19 
7 2   20 

以上がDFのほんの一部であり、ヴァルスによってグループ化されていますidであり、idごとに常に同じ数のvalが存在します。上の例では、id = 1とid = 2の値は4と4です。

私が達成しようとしているのは、インデックス0の値をインデックス4に追加し、インデックス1の値をインデックス5の値に追加するなどです。 期待DF /シリーズがされた後、DF2言う:

total 
0  14 
1  9.5 
2  17 
3  28 

レアルのDFは、IDの数百を持っているだけではなく、2上記のように。 Groupby()が使用できますが、各グループの特定のインデックスを取得する方法はわかりません。

不明な点がある場合は教えてください。 df.index値のモジュロに

答えて

1

groupbysum

vals
In [805]: df.groupby(df.index % 4).vals.sum() 
Out[805]: 
0 14.0 
1  9.5 
2 17.0 
3 28.0 
Name: vals, dtype: float64 
1

を取るIDごと4値が正確にあるので、我々は、単に適切な軸(沿っ2Dアレイとの和に根底1D配列データを再構築することができますこの場合の軸= 0) -

pd.DataFrame({'total':df.vals.values.reshape(-1,4).sum(0)}) 

サンプルラン -

In [192]: df 
Out[192]: 
    id vals 
0 1 11.0 
1 1 5.5 
2 1 -2.0 
3 1 8.0 
4 2 3.0 
5 2 4.0 
6 2 19.0 
7 2 20.0 

In [193]: pd.DataFrame({'total':df.vals.values.reshape(-1,4).sum(0)}) 
Out[193]: 
    total 
0 14.0 
1 9.5 
2 17.0 
3 28.0 
関連する問題