1
にパンダで辞書エントリを解凍し、それは、私がいずれかの列が辞書を持っているデータフレームを持つデータフレーム
import pandas as pd
import numpy as np
def generate_dict():
return {'var1': np.random.rand(), 'var2': np.random.rand()}
data = {}
data[0] = {}
data[1] = {}
data[0]['A'] = generate_dict()
data[1]['A'] = generate_dict()
df = pd.DataFrame.from_dict(data, orient='index')
私は辞書内のキー/値のペアを展開したいと思います新しいデータフレーム。各エントリには独自の行があります。
def expand_row(row):
df_t = pd.DataFrame.from_dict({'value': row.A})
df_t.index.rename('row', inplace=True)
df_t.reset_index(inplace=True)
df_t['column'] = 'A'
return df_t
df_expanded = pd.DataFrame([])
for _, row in df.iterrows():
T = expand_row(row)
df_expanded = df_expanded.append(T, ignore_index=True)
これはかなり遅いです、そして私のアプリケーションは、パフォーマンスが重要です:私は、行を反復処理して、新しいデータフレームに付加することによってそれを行うことができます。私はこれをdf.apply
で行うことができます。しかし、私の関数がシリーズではなくDataFrameを返すので、単に
df_expanded = df.apply(expand_row)
というように動作しません。これを行う最も効果的な方法は何でしょうか?
ありがとうございます。