我有一个列表,其中包含来自多个来源的多个词典。此列表中每个字典的键是source
。例如,该列表如下所示:
data = [{'source1': {'time': 1, 'name': 'abc', 'memory': 9.82}},
{'source1': {'time': 2, 'name': 'def', 'memory': 9.14}},
{'source2': {'time': 1,'name': 'random1', 'memory': 1.45}},
{'source2': {'time': 2,'name': 'random2', 'memory': 1.49}}]
上面的列表一次包含来自多个来源的词典以及更多的属性。
我想创建一个数据框架,如下所示:
答案 0 :(得分:1)
我尝试了这里的代码:
import pandas as pd
data = [{'source1': {'time': 1, 'name': 'abc', 'memory': 9.82}},
{'source1': {'time': 2, 'name': 'def', 'memory': 9.14}},
{'source2': {'time': 1,'name': 'random1', 'memory': 1.45}},
{'source2': {'time': 2,'name': 'random2', 'memory': 1.49}}]
dfs = []
last_source = next(iter(data[0]))
df = pd.DataFrame()
for i in data :
for key, val in i.items() :
new_source = key
cols = []
rows = []
for subkey in val :
cols.append(subkey)
rows.append(val[subkey])
if new_source != last_source :
last_source = new_source
dfs.append(df)
df = pd.DataFrame([rows],columns=cols)
else :
dft = pd.DataFrame([rows],columns=cols)
df = df.append(dft)
dfs.append(df)
#print(pd.concat(dfs, axis=1, join='inner'))
print( dfs[0].join(dfs[1].set_index('time'), on='time'))
输出
time name_source1 memory_source1 name_source2 memory_source2
0 1 abc 9.82 random1 1.45
0 2 def 9.14 random2 1.49