Экспорт DataFrame из словарей в файл JSON - PullRequest
0 голосов
/ 27 июня 2018
have_df = pd.DataFrame({'User':['101','101','101'],'json_text':["""{"president":{"name": "Zaphod Beeblebrox","species": "Betelgeusian"}}""","""{"president":{"name": "Zaphod Beeblebrox","species": "Betelgeusian"}}""",'blank']})

и я хочу этот файл экспорта с разделителями и попробовал это:

have_df.to_csv('have_df.csv',sep="|")

когда я открываю и вижу файл канала, появляются дополнительные двойные кавычки вокруг текстовых значений json, например:

"{""president"":{""name"": ""Zaphod Beeblebrox"",""species"": ""Betelgeusian""}}"

как убрать эту лишнюю двойную кавычку программным способом? Спасибо

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Сначала проверьте данные JSON, а затем сохраните в csv:

import json

(have_df.json_text
        .replace('blank', "None")
        .apply(ast.literal_eval)
        .to_csv('file.csv', sep='|')
)

file.csv

0|{'president': {'name': 'Zaphod Beeblebrox', 'species': 'Betelgeusian'}}
1|{'president': {'name': 'Zaphod Beeblebrox', 'species': 'Betelgeusian'}}
2|
0 голосов
/ 27 июня 2018

У вас есть json string, конвертируйте его, используя json.loads, и вы должны решить вашу проблему

Ex:

import pandas as pd
import json

def converttojson(val):
    try:
        return json.loads(val)
    except:
        return val

have_df = pd.DataFrame({'User':['101','101','101'],'json_text':["""{"president":{"name": "Zaphod Beeblebrox","species": "Betelgeusian"}}""","""{"president":{"name": "Zaphod Beeblebrox","species": "Betelgeusian"}}""",'blank']})
have_df["json_text"] = have_df["json_text"].apply(converttojson)
have_df.to_csv(filename,sep="|")
  • Примечание - Вы можете использовать have_df["json_text"].apply(json.loads) напрямую. Но я использовал converttojson, потому что у вас есть blank в ваших данных выборки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...