TLDR: DataFramesの配列を取り、その周囲にMultiIndexを構築する方法がわかりません。DataFramesの配列を単一のDataFrameに変換する
TLDR 2:私の研究からPool().Map()
にグローバル/共有/単一データフレームのオフ動作するようにしようとするよりも、リターン結果に対処することをお勧めします。誰かがそれを共有する方法を持っているなら、私はそれのためにすべてです。
私はPool()によって返されたMultiIndexパンダのデータフレームの配列をマージしようとしています。 Map()機能。
p = Pool()
results = p.map(run_experiment, experiment_collection)
Pool().map()
は配列として返します。プロセスが、[0:5]
と第2の[0:50]
という最初のインデックスを持つ1000 DataFrame
の配列を返したとしましょう。
私が望むのは、各実験を分離する単一のDataFrameである最終出力を作成することです。[0:1000]
/[0:5]
/[0:50]
私はnp.zeros_like
を使用してマルチインデックスを作成し、データフレームを埋めるために方法を知っているが、私は、データフレームの配列を取得し、その周りにマルチインデックスを構築する方法を知りません。私の第一の例で
rounds = range(0,1000)
levels = [... some set of levels ...]
labels = [... some set of labels ...]
iterables = [rounds, labels, levels]
names = ['round', 'label', 'values']
index = pd.MultiIndex.from_product(iterables, names=names)
index_names = [... some set of index names...]
empty_df = pd.DataFrame(
np.zeros_like(np.random.randn(5, 50000)),
index=index_names,
columns=index
)
.sort_index()
.sort_index(axis=1)
、results
はlevels
/labels
のマルチインデックスデータフレームの配列です。私がしようとしているのは、トップレベル(これらすべてのDataFramesを保持する配列)を新しいインデックスに置き換える最終的なDataFrameを作成することです。
私はそれが1000のデータフレームの配列であるため、理にかなってValueError: Shape of passed values is (1, 1000), indices imply (shape of intended index)
を取得しています
p = Pool()
results = pd.DataFrame(
p.map(run_experiment, experiment_collection),
index=index_names,
columns=index
)
.sort_index()
.sort_index(axis=1)
を試してみてください。
私は(行くには良い方法のように感じている)連結した場合
results = pd.concat(p.map(run_experiment, experiment_collection))
私はlevels
/labels
とのデータフレームを取得し、ないround
。
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False)
iterables = [rounds, labels, levels]
は、私が戻ってデータフレームに私の
rounds
を取得するには、ここで操作しなければならないオプション(キー、レベル名)のかわからないんだけど。
results = pd.concat(
p.map(run_experiment, experiment_collection),
levels=iterables,
names=names,
axis=1
)
私が望む形式に本当に近いですが、いいえround
を取得します。
私が必要な場合は具体的になることができますが、回答に役立つその他の情報は完全にはわかりません。