#python #json #pandas #dataframe
Вопрос:
Я создаю функцию, которая отправляет данные на удаленный сервер. В настоящее время я использую библиотеку pandas для чтения CSV-файла и преобразования данных в фрейм данных. Что мне нужно сделать, так это просмотреть этот фрейм данных, скрыть каждую строку в JSON и отправить их в мою базу данных.
Причина, по которой мне нужно перебирать, заключается в том, что наборы данных, которые слишком велики (в настоящее время отправляют 100 строк по 21 столбцу), слишком длинны для HTML-строк. Что мне нужно сделать, так это отправить цикл и отправить много 10 или около того.
Ниже показано, где я нахожусь в данный момент:
def UploadData(root, self, data): i = 0 data_arr = [] for row in data: if i % 5 == 0: # Add row to array or something data_arr.append(row) json_str = data_arr.to_json(orient='records') url = 'https://newsimland.com/~db/JSON/?tok={"tok":"YOUR TOKEN HERE","cmd":{"STORE":"test_database","VALUE":' json_str '}}' r = requests.get(url) else: # Add row to array data_arr.append(row) i = 1 data = r.json() if r.status_code == 200: Alert(title="Error", text="Data upload unsuccessful") else: Alert(title="Success", text="Data upload successful")
Одна из проблем с этим заключается в том, что .to_json(orient='records')
это предназначено для фрейма данных, а не для массива, к которому я добавляю. Кроме того, если исходный кадр данных содержит менее 5 строк, он не будет отправлять данные в базу данных.
Кто-нибудь знает, как я мог бы этого добиться?
Ответ №1:
Если я вас правильно понимаю, вы хотите отправить свой фрейм данных частями по 5 или менее строк. В этом случае я рекомендую вам разделить фрейм данных следующим образом, чтобы строки сохранялись как фрейм данных и вы могли их использовать to_json
.
import numpy as np def UploadData(root, self, data): size = 5 for chunk in np.split(data, np.arange(size, data.size, size)): if chunk.size: json_str = chunk.to_json(orient='records') # Send your data here!