ホームページ  >  記事  >  バックエンド開発  >  「groupby」を使用してパンダデータフレーム内のグループ内の文字列を連結する方法は?

「groupby」を使用してパンダデータフレーム内のグループ内の文字列を連結する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 18:35:04503ブラウズ

How to Concatenate Strings within Groups in a Pandas DataFrame Using `groupby`?

Pandas groupby: 文字列連結の取得

列の 1 つに文字列が含まれる DataFrame を操作する場合、デフォルトの sum() 関数必ずしも望ましい結果が得られるとは限りません。このようなシナリオでは、各グループの文字列を連結することが目的であり、ここでは包括的な説明と解決策を示します。

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

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

デフォルトでは、 sum() を適用します。列 "C" に追加すると、次の出力が得られます。

A
1    Thisstring
2           is!
3             a
4        random
dtype: object

グループごとに文字列が連結された目的の出力を取得するには、いくつかの方法があります。

apply メソッドを使用する() 関数:

1 つの方法は、カスタム関数を groupby オブジェクトに適用することです。この関数は、各グループ内の文字列を連結できます。

<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>

別の方法:

apply() 関数とラムダ関数を明示的に使用することで、同じ結果を達成できます。

<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join(x))</code>

カスタム ロジックの適用:

空の文字列の削除や特定の区切り文字の適用などのカスタマイズが必要な場合は、ラムダ関数内に独自のロジックを実装できます。

たとえば、空の文字列を削除するには:

<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join([c for c in x if c]))</code>

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

カスタム関数を適用すると、組み込みの sum() 関数。したがって、特定の要件に基づいてパフォーマンスへの影響を考慮することをお勧めします。

以上が「groupby」を使用してパンダデータフレーム内のグループ内の文字列を連結する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。