[解決済み] pandasを使用して、与えられた条件に一致するカラムの値を合計するにはどうすればよいですか?
2023-06-29 12:17:17
質問
このようなカラムがあるとします。
a b
1 5
1 7
2 3
1 3
2 5
の値を合計したい。
b
ここで
a = 1
などとなります。この場合、次のようになります。
5 + 7 + 3 = 15
.
pandasでこれを行うにはどうしたらよいでしょうか?
どのように解決するのですか?
ここでの本質的な考え方は、合計したいデータを選択し、それらを合計することです。このデータの選択は、いくつかの異なる方法で行うことができ、そのうちのいくつかを以下に示します。
ブール式のインデックス作成
値を選択する最も一般的な方法は、間違いなく ブール式のインデックス付け .
この方法では、列 'a' がどこに等しいかを調べます。
1
を見つけ、列 'b' の対応する行を合計します。このとき
loc
を使って、行と列のインデックスを処理することができます。
>>> df.loc[df['a'] == 1, 'b'].sum()
15
ブールインデックスは他のカラムにも拡張することができます。例えば
df
にも列 'c' があり、'a' が 1 で 'c' が 2 である 'b' の行を合計したいとしたら、こう書くでしょう。
df.loc[(df['a'] == 1) & (df['c'] == 2), 'b'].sum()
クエリ
データを選択する別の方法として
query
で興味のある行をフィルタリングし、列 'b' を選択し、そして合計することです。
>>> df.query("a == 1")['b'].sum()
15
ここでも、この方法を拡張することで、より複雑なデータの選択を行うことができる。
df.query("a == 1 and c == 2")['b'].sum()
これはブール式インデックスのアプローチよりも少し簡潔であることに注意してください。
グループ化
別のアプローチとして
groupby
を使って、列 'a' の値に応じて DataFrame を分割することです。その後、各部分を合計して、1が加算された値を取り出すことができます。
>>> df.groupby('a')['b'].sum()[1]
15
この方法は,ブールインデックスを使うよりも遅くなる可能性が高いですが,カラム
a
:
>>> df.groupby('a')['b'].sum()
a
1 15
2 8
関連
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] Pandas DataFrameの特定の列の値がNaNである行を削除する方法
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] バブルソートの宿題
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Pythonの文字列書式をリストで使う