私は2つのグループを持っています.1つはグループとして処理される行があり、もう1つはグループになります。マルチプロセッシンググループがPythonを適用する
現在、私はこの上でマルチプロセッシング行う方法を知りませんが、グループのすべての行にgr1.apply(lambda x: custom_func(x.Address1, gr2.get_group(x.name)))
を私の関数を適用しています
test = pd.DataFrame({'Address1':['123 Cheese Way','234 Cookie Place','345 Pizza Drive','456 Pretzel Junction'],'city':['X','U','X','U']})
test2 = pd.DataFrame({'Address1':['123 chese wy','234 kookie Pl','345 Pizzza DR','456 Pretzel Junktion'],'city':['X','U','Z','Y'] , 'ID' : ['1','3','4','8']})
gr1 = test.groupby('city')
gr2 = test2.groupby('city')
。お知らせ下さい。
EDIT: - dask
を使用しようとしましたが、データフレーム全体をdaskの関数に渡すことはできません - apply
機能には制限があります。そして私はgr1(グループ)にdaskを適用しようとしましたが、カスタム関数でインデックスを設定しているので、 "インデックスが多すぎます"というエラーがスローされます。
ここDASKと、これは私にエラーを与える - 'Pandas' object has no attribute 'city'
ddf1 = dd.from_pandas(test, 2)
ddf2 = dd.from_pandas(test2, 2)
dgr1 = ddf1.groupby('city')
dgr2 = ddf2.groupby('city')
meta = pd.DataFrame(columns=['Address1', 'score', 'idx','source_index'])
ddf1.map_partitions(custom_func, x.Address1, dgr2.get_group(x.city).Address1,meta=meta).compute()
「dask」を見ると、それはpandasとよく統合されています。 – suvy
うん、それを見たが、daskは、適用機能でデータフレームを渡すことをサポートしていない。 2つ目は、グループにdaskを適用しようとしたとき、私はcustom_funcの中にインデックスを設定しようとしているので、「インデクサが多すぎます」と失敗します。 –
dask applyは、列を使用してmap_partitionを使用する場合は、行を有効にする必要があります。あなたが試したこととエラーが報告されたあなたの質問を編集するのはクールですか? – suvy