У меня есть скрипт, который я использую для запуска заказов из CSV-файла на биржу с использованием цикла for.
data = pd.read_csv('orderparameters.csv')
df = pd.DataFrame(data)
for i in range(len(df)):
order = Client.new_order(...
...)
file = open('orderData.txt', 'a')
original_stdout = sys.stdout
with file as f:
sys.stdout = f
print(order)
file.close()
sys.stdout = original_stdout
Я поместил ответ от биржи в текстовый файл, подобный этому...
Я хочу превратить несколько ответов в один фрейм данных. Я бы надеялся, что это будет выглядеть как...
(я делал это вручную). Я попытался;
data = pd.read_csv('orderData.txt', header=None)
dfData = pd.DataFrame(data)
print(dfData)
но я получил;
я тоже пробовал
data = pd.read_csv('orderData.txt', header=None)
organised = data.apply(pd.Series)
print(organised)
но я получил тот же результат. Я могу печатать order['symbol'] внутри цикла и т.д. Я не уверен, должен ли я заполнять этот фрейм данных в цикле или путем захвата и записи ответа и последующей его обработки. Ценю ваш совет.
Правильные данные, неправильный формат. Мне кажется, что у меня есть 3 словаря (приложенных к текстовому файлу ответа), которые были созданы в результате повторения цикла заказов, которые я запускал в Binance из файла «orderparameters.csv». Я хочу превратить эти 3 словаря в 1 новый фрейм данных.
Если я правильно понял ваш вопрос, вы можете просто сделать следующее:
import pandas as pd
orders = pd.read_csv('orderparameters.csv')
responses = pd.DataFrame(Client.new_order(...) for _ in range(len(orders)))
Спасибо. Нет, на самом деле «orderparameters.csv» генерируется мной для запуска ордеров на Binance. Это ответ от Binance, который я пытаюсь обработать. Это внутри цикла, потому что здесь, в моем CSV-файле, у меня есть 3 ордера, которые я отправляю в binance из первого кадра данных. Я хочу создать новый фрейм данных из ответа
Да. Это то, что делает мой код: использует ваши заказы, отправляет каждый из них клиенту, получает ответы и создает DataFrame из списка ответов, которые, как я предполагаю, являются объектами json.
Ах, конечно. Да, идеально. Я недостаточно хорошо разбираюсь в коде, чтобы понять это. Спасибо
Похоже, вы возвращаете строки json, вы можете читать объекты json в словари, а затем создавать из них фрейм данных. Возможно, попробуйте что-то вроде этого (больше не нужен файл)
data = pd.read_csv('orderparameters.csv')
df = pd.DataFrame(data)
response_data = []
for i in range(len(df)):
order_json = Client.new_order(...
...)
response_data.append(eval(order_json))
response_dataframe = pd.DataFrame(response_data)
Спасибо!!!! Это сработало отлично!! Сначала мне нужно преобразовать order_json в строку, но это нормально, так как я могу изменить его обратно при последующей обработке. Бен, ты легенда. Весьма признателен!
eval
превращает строку в словарь. Если вы просто возвращаете словарь, вы можете использовать его напрямую и избежать ненужных преобразований. Я предполагал, что вы получаете строку обратно
Однако полезно знать о функции eval. Обязательно начну использовать. Потрясающе 👏
То, что вы ожидаете, — это снимок экрана файла excel, а то, что вы получаете, — это снимок экрана объекта json (похоже, он имеет те же данные, что и в файле excel). Что именно вы надеетесь получить? То, что у вас есть, имеет неправильный формат или у него неправильные данные (или и то, и другое)?