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

Barbara Streisand
リリース: 2024-10-24 18:35:04
オリジナル
513 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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