やりたいこと
以下のデータフレーム1をデータフレーム2の状態にしたい
データフレーム1(df1)
name | money | type |
---|---|---|
A | 100 | 1 |
A | 150 | 2 |
A | 50 | 3 |
B | 0 | 2 |
B | 90 | 4 |
C | 20 | 1 |
C | 150 | 5 |
データフレーム2(df2)
name | total_money | count |
---|---|---|
A | 300 | 3 |
B | 90 | 2 |
C | 170 | 2 |
※nameは重複なし
※total_moneyはnameを軸にしたmoneyの合計
※countはnameを軸にしたmoneyのカウント
※total_moneyもcountも対象はtypeが1と2ものだけで、他は除外
考えていたこと・・
functions = ['count', 'sum']
df2= df1.groupby('name')['money'].agg(functions)
これだと計算に入れたくないtypeも対象となってしまう。
条件
-
type = ['1', '2']のような形で処理したい。
理想は新しいデータフレームを作成するときにif文とかで分岐できると良い。 -
かなりデータ件数が多いので、typeが対象外の行を削除とかは難しい。
-
df1には記載ない列も多数ある
df2でもその記載なき列も2列だけ使用する
回答1件
あなたの回答
tips
プレビュー