как преобразовать словарь списка в фрейм данных pandas в python

#python #pandas #dataframe #dictionary

#python #pandas #фрейм данных #словарь

Вопрос:

У меня есть этот словарь со списком элементов, но у меня возникают проблемы с преобразованием его в фрейм данных pandas, это ответ, который я получаю при попадании в конечную точку

 {'monologues': [{'speaker': 0,
   'elements': [{'type': 'text',
     'value': 'So',
     'ts': 0.0,
     'end_ts': 0.18,
     'confidence': 0.93},
    {'type': 'punct', 'value': ' '},
    {'type': 'text',
     'value': 'this',
     'ts': 0.18,
     'end_ts': 0.36,
     'confidence': 1.0},
    {'type': 'punct', 'value': ' '},
    {'type': 'text',
     'value': 'is',
     'ts': 0.36,
     'end_ts': 0.42,
     'confidence': 1.0},
    {'type': 'punct', 'value': '.'}]}]}
 

я хочу получить ts, end_ts и значение в фрейм данных

ожидаемый фрейм данных:

     Words   ts      end_ts
0   so      0.0     0.18
1   this    0.18    0.36
 

Это то, что я пробовал, но не дал мне ожидаемого ответа

 import pandas as pd
df = pd.DataFrame(transcript_json, columns=transcript_json.keys())
df.head() 
 

Ответ №1:

Вам нужно проанализировать dict, а затем добавить его в фрейм данных.

 import pandas as pd

js = {'monologues': [{'speaker': 0,
   'elements': [{'type': 'text',
     'value': 'So',
     'ts': 0.0,
     'end_ts': 0.18,
     'confidence': 0.93},
    {'type': 'punct', 'value': ' '},
    {'type': 'text',
     'value': 'this',
     'ts': 0.18,
     'end_ts': 0.36,
     'confidence': 1.0},
    {'type': 'punct', 'value': ' '},
    {'type': 'text',
     'value': 'is',
     'ts': 0.36,
     'end_ts': 0.42,
     'confidence': 1.0},
    {'type': 'punct', 'value': '.'}]}]}

inner_js = [val for _, val in js.items()][0][0]
df = pd.DataFrame(columns=['Words', 'ts', 'end_ts'])
for i in inner_js['elements']:
    if i.get('ts') or i.get('end_ts'):
        df = df.append({'Words':i['value'], 'ts':i['ts'], 'end_ts':i['end_ts']}, ignore_index=True)
 

Комментарии:

1. Большое вам спасибо, я благодарен @DGS