ホームページ > バックエンド開発 > Python チュートリアル > Pandas でグループ化されたデータにシーケンシャル カウンター列を効率的に追加する方法

Pandas でグループ化されたデータにシーケンシャル カウンター列を効率的に追加する方法

Linda Hamilton
リリース: 2024-12-24 14:04:15
オリジナル
905 人が閲覧しました

How to Efficiently Add a Sequential Counter Column to Grouped Data in Pandas?

Pandas DataFrame のグループにシーケンシャル カウンター列を追加する

データ ラングリングのコンテキストでは、シーケンシャル カウンターを追加する一般的なタスクがあります。列をパンダ データフレーム内のグループに追加します。 1 つのアプローチは、これまでに示したようにコールバック関数を使用することです。

def callback(x):
    x['seq'] = range(1, x.shape[0] + 1)
    return x
ログイン後にコピー

この方法は機能しますが、別の関数を定義する必要があり、面倒になる可能性があります。より簡潔で洗練された解決策は、cumcount() メソッドを利用することです。

df.groupby(['c1', 'c2']).cumcount()
ログイン後にコピー

このメソッドは、各グループの累積カウントを計算し、グループ内の各行に連続番号を効果的に割り当てます。たとえば、次のデータフレームを考えてみます。

index c1 c2 v1
0 A X 3
1 A X 5
2 A Y 7
3 A Y 1
4 B X 3
5 B X 1
6 B X 3
7 B Y 1
8 C X 7
9 C Y 4
10 C Y 1
11 C Y 6

c1 と c2 でグループ化されたこのデータフレームにcumcount() を適用すると、次の結果が生成されます。

index c1 c2 v1 seq
0 A X 3 1
1 A X 5 2
2 A Y 7 1
3 A Y 1 2
4 B X 3 1
5 B X 1 2
6 B X 3 3
7 B Y 1 1
8 C X 7 1
9 C Y 4 1
10 C Y 1 2
11 C Y 6 3

代わりに 1 から順序付けを開始します。 0 の場合は、cumcount() の結果に 1 を加算するだけです:

df.groupby(['c1', 'c2']).cumcount() + 1
ログイン後にコピー

以上がPandas でグループ化されたデータにシーケンシャル カウンター列を効率的に追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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