1

1つの列を持つデータフレームがあり、3つの一意の値があるとしましょう

ここをクリックして入力を表示

import pandas as pd
df = pd.DataFrame(['a', 'b', 'c'], columns = ['string'])
df

各データフレームに2つの一意の値が含まれるように、このデータフレームをより小さなデータフレームに分割したいと考えています。上記の場合、3 つのデータ フレーム 3c2(nCr) = 3.df1 - [ab] df2 - [ac] df3 - [bc] が必要です。以下のリンクをクリックして、現在の実装を確認してください。

現在のコードと出力を表示するには、ここをクリックしてください

import itertools
for i in itertools.combinations(df.string.values, 2):
    print(df[df.string.isin(i)], '\n')

パンダの groupby のようなものを探しています。ループ内のデータのサブセット化には時間がかかるためです。サンプル ケースの 1 つでは、609 個の一意の値があり、ループを完了するのに約 3 分かかりました。したがって、実際のシナリオでは一意の値が最大 1000 になる可能性があるため、同じ操作を実行するための最適化された方法を探しています。

4

1 に答える 1