レコードのグループ化

Algorithm for grouping records – StackOverflow

中間処理がちょっと非効率的でしっくりこないけど.
或いは,交差結合を考えるかだけど,多分この方がまだリーズナブルかなと思う.

import io
import pandas as pd


strings = """Group Name
1     A
1     B
2     R
2     F
3     B
3     C"""

df = (
    pd.read_csv(io.StringIO(strings), sep='\s+')
    .assign(
        temp=lambda df: df['Name'].map(df.groupby('Name').first()['Group']),
        ResultGroup=lambda df: df['Group'].map(df.groupby('Group')['temp'].first())
    ).drop('temp', 1)
)
df
    Group   Name    ResultGroup
0   1   A   1
1   1   B   1
2   2   R   2
3   2   F   2
4   3   B   1
5   3   C   1
広告
カテゴリー: 未分類 パーマリンク

コメントを残す

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

WordPress.com ロゴ

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

Google フォト

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

Twitter 画像

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

Facebook の写真

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

%s と連携中

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