Я попробовал, что я мог, вот код:
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