Вы можете использовать join
с pop
+ tolist
:
d = [{"key":1000000, "name":"Aelf", "level":0, "hasData":"true", "fields":{"id":"elf"}},
{"key":2000000, "name":"Cdaf", "level":1, "hasData":"false", "fields":{"id":"deer"}}]
df = pd.DataFrame(d)
res = df.join(pd.DataFrame(df.pop('fields').tolist()))
Результат:
hasData key level name id
0 true 1000000 0 Aelf elf
1 false 2000000 1 Cdaf deer