ホームページ > バックエンド開発 > Python チュートリアル > Groupbyを使用してパンダの複数の行の文字列を連結する方法は?

Groupbyを使用してパンダの複数の行の文字列を連結する方法は?

Susan Sarandon
リリース: 2024-12-15 12:17:14
オリジナル
530 人が閲覧しました

How to Concatenate Strings from Multiple Rows in Pandas Using Groupby?

Pandas Groupby を使用して複数の行からの文字列を連結する

データフレームを操作する場合、複数の行からの文字列を連結する必要がある場合があります。特定の基準に基づいてグループ化します。 Pandas は、groupby 関数とtransform 関数を通じて、この問題に対する便利なソリューションを提供します。

問題ステートメント

列「name」、「text」、および「month」を持つデータフレームが与えられたとします。 」の目的は、「名前」と「月」の一意の組み合わせごとに「テキスト」列の文字列を連結することです。必要な出力は、一意の「名前」と「月」の組み合わせと連結された「テキスト」値を含むデータフレームです。

ソリューション

これを実現するには、次を利用できます。次の手順:

  1. データフレームを「名前」と「月」でグループ化します。 groupby() 関数。
  2. transform() 関数を使用して、各グループの「テキスト」エントリを結合するラムダ式を適用します。
  3. 重複した行を削除するには、結果の行から重複を削除します。 drop_duplicates() 関数を使用したデータフレーム。

例を示します。コード:

import pandas as pd
from io import StringIO

data = StringIO("""
"name1","hej","2014-11-01"
"name1","du","2014-11-02"
"name1","aj","2014-12-01"
"name1","oj","2014-12-02"
"name2","fin","2014-11-01"
"name2","katt","2014-11-02"
"name2","mycket","2014-12-01"
"name2","lite","2014-12-01"
""")

# load string as stream into dataframe
df = pd.read_csv(data, header=0, names=["name", "text", "date"], parse_dates=[2])

# add column with month
df["month"] = df["date"].apply(lambda x: x.month)

df['text'] = df[['name','text','month']].groupby(['name','month'])['text'].transform(lambda x: ','.join(x))
df[['name','text','month']].drop_duplicates()
ログイン後にコピー

上記のコードは、次の目的の結果を持つデータフレームを生成します:

    name         text  month
0  name1       hej,du     11
2  name1        aj,oj     12
4  name2     fin,katt     11
6  name2  mycket,lite     12
ログイン後にコピー

代替ソリューション

transform( を使用する代わりに) )、apply() を使用してから、reset_index() を使用して同じ結果を達成することもできます。更新されたコードは次のようになります。

df.groupby(['name','month'])['text'].apply(','.join).reset_index()
ログイン後にコピー

この簡素化されたバージョンでは、ラムダ式が削除され、より簡潔なソリューションが提供されます。

以上がGroupbyを使用してパンダの複数の行の文字列を連結する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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