ホームページ  >  記事  >  バックエンド開発  >  複数の列に基づいて Pandas DataFrame の各グループの最初の行を取得するにはどうすればよいですか?

複数の列に基づいて Pandas DataFrame の各グループの最初の行を取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-17 09:59:03725ブラウズ

How to retrieve the first row of each group in a Pandas DataFrame based on multiple columns?

Pandas DataFrame の各グループの最初の行を取得する

質問:

方法グループ化が複数の列で定義されている Pandas DataFrame から各グループの最初の行を効率的に抽出できますか?

回答:

の最初の行を取得するには複数の列に基づく Pandas DataFrame の各グループ:

  1. データのグループ化: groupby() メソッドを使用して、目的の列ごとに DataFrame をグループ化します:

    df_grouped = df.groupby(['id', 'value'])
  2. 集計関数を適用します: first() 関数を各グループに適用して、最初の非 null 要素を取得します:

    df_first_rows = df_grouped.first()
  3. インデックスのリセット (オプション): 「id」列と「value」列を別個の列として必要な場合は、reset_index() メソッドを使用します:

    df_first_rows = df_first_rows.reset_index()

例:

次の DataFrame を考えます:

df = pd.DataFrame({'id': [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 6, 7, 7],
                   'value': ["first", "second", "second", "first",
                             "second", "first", "third", "fourth",
                             "fifth", "second", "fifth", "first",
                             "first", "second", "third", "fourth", "fifth"]})

上記の手順を適用します:

df_grouped = df.groupby(['id', 'value'])
df_first_rows = df_grouped.first()
df_first_rows = df_first_rows.reset_index()

print(df_first_rows)

出力:

   id   value
0   1   first
1   2   first
2   3   first
3   4   second
4   5   first
5   6   first
6   7   fourth

このコードは、「id」列と「value」列で定義された各グループの最初の行を正常に取得します。

以上が複数の列に基づいて Pandas DataFrame の各グループの最初の行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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