Pandas Groupby 内で文字列を結合して一意の値を得るにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-25 00:27:02
オリジナル
293 人が閲覧しました

How Can I Combine Strings Within Pandas Groupby for Unique Values?

Pandas Groupby を使用して文字列の共用体を取得する方法

Pandas の groupby メソッドを使用してデータをグループ化する場合、数値列は次を使用して簡単に集計できます。合計のような関数です。ただし、単純な連結が常に必要なわけではないため、文字列列の集約には課題が伴います。この記事では、グループ内の文字列の和集合を取得する方法について説明します。

問題:

次の DataFrame について考えてみましょう:

A B C
1 0.749065 This
2 0.301084 is
3 0.463468 a
4 0.643961 random
1 0.866521 string
2 0.120737 !

DF を適用します。 groupby("A")["B"].sum() は、各グループの列 B の数値の合計を返します。ただし、文字列列 C で df.groupby("A")["C"].sum() を呼び出すと期待どおりに機能せず、文字列が連結されます。

解決策:

カスタム関数:

1 つのアプローチは、グループ内の文字列値を集計するカスタム関数を定義することです。この関数は、apply() メソッドを使用して DataFrame に適用できます。例:

<code class="python">def f(x):
    return Series(dict(A = x['A'].sum(), 
                        B = x['B'].sum(), 
                        C = "{%s}" % ', '.join(x['C'])))

df.groupby('A').apply(f)</code>
ログイン後にコピー

これは、グループごとに列 C の文字列の結合を含む DataFrame を返します。文字列は中括弧内に含まれます。

Lambda with . sum():

もう 1 つの方法は、数値列には .sum() を使用し、文字列列にはカスタム連結を使用して、ラムダ関数を groupby オブジェクトに適用することです:

<code class="python">df.groupby('A').apply(lambda x: x.sum())</code>
ログイン後にコピー

これにより、数値と連結された文字列の合計を含む DataFrame が返されます。文字列の結合を取得するには、ラムダ関数内で文字列操作を使用できます。

パフォーマンスに関する考慮事項:

カスタム関数を groupby に適用することに注意することが重要です。 object は、数値列で集計関数を使用するよりも遅くなります。大規模なデータセットの場合、このパフォーマンスのトレードオフを考慮する必要があります。

以上がPandas Groupby 内で文字列を結合して一意の値を得るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!