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

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

DDD
DDDオリジナル
2024-12-05 04:54:08475ブラウズ

How Can I Efficiently Group Consecutive Values in a Pandas DataFrame Column?

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

DataFrame では、グループ化する必要がある連続した値を含む列が発生する場合があります。たとえば、値が含まれる次の列を考えます:

[1, 1, -1, 1, -1, -1]

これらの値を次のような目的のグループに効率的にグループ化するには:

[1,1] [-1] [1] [-1, -1]

Pandas ライブラリを使用して次の手順に従います:

カスタム シリーズを使用したソリューショングループ化

カスタム シリーズを利用してこのグループ化を実現できます。アプローチは次のとおりです:

import pandas as pd

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

# Use ne() and cumsum() to create grouping indicator
ind = df['a'].ne(df['a'].shift()).cumsum()

# Group by this indicator
for i, g in df.groupby(ind):
    # Print grouping key
    print(i)
    
    # Print rows in group
    print(g)
    
    # Convert values to list for display
    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 サイトの他の関連記事を参照してください。

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