Groupbyでいくつかの行といくつかの列を合計

sum up some rows and some columns with Groupby – StackOverflow

条件が明示されていないけど,2行ずつ集計したいと捉える.

import io
import pandas as pd


strings = """  Name  c1  c2  c3  c4
0   a1   1   2   2   3
1   a2   2   1   1   2
2   a3   3   1   2   1
3   a4   2   3   3   4
4   b1   1   2   2   3
5   b2   3   1   2   1
6   b3   2   1   2   1
7   b4   1   3   4   1"""

f = """
c1_c2=c1+c2
c3_c4=c3+c4
"""
df = (
    pd.read_csv(io.StringIO(strings), sep='\s+')
    .eval(f)[['Name', 'c1_c2', 'c3_c4']]
    .groupby(lambda i: i//2)
    .agg({'Name': '+'.join, 'c1_c2': 'sum', 'c3_c4': 'sum'})
)
df
    Name    c1_c2   c3_c4
0   a1+a2   6   8
1   a3+a4   9   10
2   b1+b2   7   8
3   b3+b4   7   8
広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください