Проблема с преобразованием списка значений словаря df в столбцы серии python

#python #mysql #json #pandas #dataframe

#питон #mysql #json #панды #фрейм данных

Вопрос:

Серия работает нормально, если кадр данных создан вручную, однако, если кадр данных сохранен(в формате csv) или создан на основе проанализированных данных из базы данных mysql, apply(pd.Серия) не преобразует данные в столбцы. Пробовал все виды, но, похоже, ничего не работает.

Работает:

 df1 = pd.DataFrame({'columns': [{"a": "cat", "b": "dog", "c": "bat", "d": "rat"},   {"a": "moose", "b": "horse", "c": "deer", "d": "sheep"}]})    print(df1['columns'].apply(pd.Series))  a b c d 0 cat dog bat rat 1 moose horse deer sheep  

Проблема в том, что я извлекаю данные из большого файла json из базы данных mysql с помощью JSON_EXTRACT, и ключи json необходимо преобразовать в столбцы и строки.Я использую pymysql и сохраняю данные в df, а затем применяю серию, однако она не преобразовала данные.Применение серии дважды тоже не сработало. Данные, сохраненные из mysql, представляют собой список элементов словаря в каждой строке.Смотреть ниже

Не работает

 df2 = pd.DataFrame({'columns': [[{"a": "cat", "b": "dog", "c": "bat", "d": "rat"}],   [{"a": "moose", "b": "horse", "c": "deer", "d": "sheep"}]]}) print(df2['columns'].apply(pd.Series))  0 0 {'a': 'cat', 'b': 'dog', 'c': 'bat', 'd': 'rat'} 1 {'a': 'moose', 'b': 'horse', 'c': 'deer', 'd': 'sheep'}  

Затем я попытался использовать json_normalize, что не сработало, а также удалил квадратные скобки, чтобы строки выглядели как dict. Сохранено как dict, а затем снова создано df, но не удалось распаковать значения из df. мой запрос на соединение

 query = '''select JSON_EXTRACT(data,'$.x.y.c) from customer_table '''  data = pd.read_sql_query(query, conn) df = pd.DataFrame(data)   

print(df) возвращает часть запроса в качестве имени столбца

 JSON_EXTRACT(data,'$.x.y.c) 0 [{'a': 'cat', 'b': 'dog', 'c': 'bat', 'd': 'rat'}] 1 [{'a': 'moose', 'b': 'horse', 'c': 'deer', 'd': 'sheep'}]  

Так как же мне преобразовать его в это?

 a b c d 0 cat dog bat rat 1 moose horse deer sheep