ホームページ > バックエンド開発 > Python チュートリアル > Pandas DataFrame で連続する値をグループ化するにはどうすればよいですか?

Pandas DataFrame で連続する値をグループ化するにはどうすればよいですか?

DDD
リリース: 2024-11-30 06:47:10
オリジナル
226 人が閲覧しました

How to Group Consecutive Values in a Pandas DataFrame?

Pandas DataFrame での連続する値のグループ化

データ分析では、データが順序付けされており、連続する値をグループ化する必要がある状況によく遭遇します。価値観を一緒に。このタスクは、カスタマイズされたグループ化手法を使用してパンダで実現できます。

次の値を含む「a」という名前の列を持つ DataFrame があるとします。

[1, 1, -1, 1, -1, -1]
ログイン後にコピー

私たちの目標は、これらをグループ化することです。

[1,1] [-1] [1] [-1, -1]
ログイン後にコピー

のように、値を連続したブロックに分割します。これを実現するには、以下を使用できます。手順:

  1. カスタム シリーズの作成: ne 関数とshift 関数を使用して新しいシリーズを作成します。このシリーズは、現在の値が前の値と異なるかどうかを示すブール値を返します。
  2. グループ化にシリーズを使用する: カスタム シリーズを groupby 関数に渡します。これにより、連続するブロックごとにデータがグループ化されます。
  3. グループ化されたデータを反復処理します: グループ化されたデータを反復処理し、インデックス、グループ化されたデータフレーム、およびフィールド内の値のリストを出力します。各グループの「a」列。

これらを実装するコードは次のとおりです。ステップ:

import pandas as pd

df = pd.DataFrame({'a': [1, 1, -1, 1, -1, -1]})
print(df)

custom_series = df['a'].ne(df['a'].shift()).cumsum()
print(custom_series)

for i, g in df.groupby(custom_series):
    print(i)
    print(g)
    print(g.a.tolist())
ログイン後にコピー

これにより、目的のグループ化が出力されます:

1
   a
0  1
1  1
[1, 1]
2
   a
2 -1
[-1]
3
   a
3  1
[1]
4
   a
4 -1
5 -1
[-1, -1]
ログイン後にコピー

以上がPandas DataFrame で連続する値をグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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