ホームページ > バックエンド開発 > Python チュートリアル > 区切り文字を使用して Pandas GroupBy グループ内の値を効率的に連結するにはどうすればよいですか?

区切り文字を使用して Pandas GroupBy グループ内の値を効率的に連結するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-04 22:28:14
オリジナル
898 人が閲覧しました

How Can I Efficiently Concatenate Values within Pandas GroupBy Groups Using a Delimiter?

区切り文字結合子を使用した Pandas GroupBy

Pandas で複数の値を使用してデータをグループ化する場合、特定の区切り文字。ただし、単純な groupby および sum 操作では、必要な区切り文字のない望ましくない出力が発生する可能性があります。

次のコードを考えてみましょう。

import pandas as pd

df = pd.read_csv("Inputfile.txt", sep='\t')
group = df.groupby(['col'])['val'].sum()
# Output:
# A CatTiger
# B BallBat
ログイン後にコピー

これにより、連結された値を含む単一の文字列が生成されます。

目的の出力を実現するには、apply 関数を以下と組み合わせて利用できます。 join:

group = df.groupby(['col'])['val'].sum().apply(lambda x: '-'.join(x))
ログイン後にコピー

ただし、この解決策でも、各値に不要な文字が含まれているため、期待どおりの出力が得られない可能性があります。

代替解決策

代わりに、結合パラメータを指定して agg 関数を使用することを検討してください。

df.groupby('col')['val'].agg('-'.join)
ログイン後にコピー

これは正しく動作します。ハイフン区切り文字を使用してグループ内の値を連結し、目的の出力を提供します。

col
A    Cat-Tiger
B     Ball-Bat
Name: val, dtype: object
ログイン後にコピー

ソリューションの更新

MultiIndex または Index 列を処理するには、インデックスをリセットできます。そして、reset_index 関数を使用して名前を変更します。

df1 = df.groupby('col')['val'].agg('-'.join).reset_index(name='new')
ログイン後にコピー

これにより、 「new」という名前の新しい列にインデックスを付けて、グループ化されたデータをさらに操作する便利な方法を提供します。

以上が区切り文字を使用して Pandas GroupBy グループ内の値を効率的に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート