Перезаписать файл df.to_json

#python #arrays #json #pandas #dataframe

#python #массивы #json #панды #фрейм данных

Вопрос:

Я создаю веб-сайт для анализа настроений в Твиттере в реальном времени, используя Python. Я хочу, чтобы результаты анализа сохранялись в файле формата json для использования в качестве исторических данных для каждого выполненного поиска. Как я могу перезаписать все данные поиска в одном файле? Данные изначально временно хранились в фрейме данных Pandas, поэтому я преобразовал их в массив в формате json

 headings = ("Tweet", "Sentimen")
data = list(zip(tweets['tweet_text'], sentiment))

df = pd.DataFrame(data, columns=['Tweet', 'Sentimen'])
df.to_json(r'Export_DataFrame6.json', orient='records', indent=4)

a_file = open("Export_DataFrame6.json", "r")
json_object = json.load(a_file)
d = json_object[0]
d['Tweet'] = "Testing"
d['Sentimen'] = "Negative"
a_file = open("Export_DataFrame6.json", "w")
json.dump(json_object, a_file)
a_file.close()
 

обновить код:

  headings = ("Tweet", "Sentimen")
data = list(zip(tweets['tweet_text'], sentiment))

df = pd.DataFrame(data, columns=['Tweet', 'Sentimen'])
df.to_json(r'Export_DataFrame6.json', orient='records', indent=4)

a_file = open("Export_DataFrame6.json", "r")
json_object = json.load(a_file)
a_file.close()

d = json_object[0]
d['Tweet'] = tweets['tweet_text']
d['Sentimen'] = sentiment
a_file = open("Export_DataFrame6.json", "w")
json.dump(json_object, a_file)
a_file.close()
 

ошибка: ошибка типа: объект типа Series не является сериализуемым в формате JSON

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

1. вы имеете в виду, что хотите добавить данные в уже созданный файл json? если это ваш вопрос, это невозможно с pandas. вы должны использовать json модуль

2. @deadshot да, это то, что я имею в виду. Но я уже конвертирую фрейм данных pandas в json, это все еще запрещено? Я пробовал использовать json.dump и json. загрузить, чтобы попытаться ввести 1 данные, которые я сам ввожу в файл, и это работает.

3. где ты застрял сейчас?

4. @deadshot Я хочу добавить переменную tweets[‘tweet_text’] и переменную sentiment (каждый раз, когда я выполняю анализ) в файл json, который уже заполнен предыдущим анализом. То, что я сказал ранее, сработало, когда я вручную заполняю его самостоятельно

5. вручную означает использование json модуля?

Ответ №1:

Я думаю, вы застряли на этой строке:

 d = json_object[0]
 

потому что вы думаете, что у вас есть объект json, но это не так, и при попытке использовать [0] вы получаете ошибку. Не видя файла json, это грубое предположение.

можете ли вы открыть свой файл таким образом?

 with open('Export_DataFrame6.json', 'rb') as f:
    json_object = f.read().decode('utf-8')
 

а затем попробуйте

 d = json_object[0]

or 

d = json.loads(json_object)[0]
 

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

1. хорошо, большое вам спасибо, но это уже решено с помощью json append