私はidでグループ化されたデータフレームを持っています。多くのグループがあり、各グループには可変数の行があります。すべてのグループの最初の3行には興味深いデータは含まれていません。私は各グループの最初の3つの行を次のようにして1行を形成するように "崩壊"したいと思います:パンダ:集計によって各グループの最初のn行を折りたたみます
「id」は新しい '折りたたみ'の行で同じままです。
「grp_idx」が変更されます「0」の最初の3行の凝集は最初の3行の和になり
COL_1が発生した場合
col_2は、最初の3行
「フラグ」の和であろう最初の3行で値がすべて0の場合、「折りたたまれた」行の値は0になります。最初の3行のいずれかが1の場合、 'flag'は1になります。ここ
を(フラグのみ、全てのグループのために一列に設定されているので、簡単な和が、このロジックに十分であろう)データフレームがどのように見えるかの例である:処理後
import pandas as pd
import numpy as np
df = pd.DataFrame.from_items([
('id', [283,283,283,283,283,283,283,756,756,756]),
('type', ['A','A','A','A','A','A','A','X','X','X']),
('grp_idx', [1,2,3,4,5,6,7,1,2,3]),
('col_1', [2,4,6,8,10,12,14,5,10,15]),
('col_2', [3,6,9,12,15,18,21,1,2,3]),
('flag', [0,0,0,0,0,0,1,0,0,1]),
]);
print(df)
id type grp_idx col_1 col_2 flag
0 283 A 1 2 3 0
1 283 A 2 4 6 0
2 283 A 3 6 9 0
3 283 A 4 8 12 0
4 283 A 5 10 15 0
5 283 A 6 12 18 0
6 283 A 7 14 21 1
7 756 X 1 5 1 0
8 756 X 2 10 2 0
9 756 X 3 15 3 1
、私が期待しますデータフレームは次のようになります:
私はどのように進むのかは分かりません。私は。
df.groupby( 'ID')で遊ぶためにヘッド(3).SUM()
をしようとしていたが、これは私が必要なものをやっていません。助け、提案、コードスニペットは本当に感謝しています。
恐ろしい!私はこれを私自身で決して解明したことはありません。お手伝いをしてくれてありがとう。 – Learner
ようこそ。素晴らしい運動でした。 – ayhan