Как превратить несколько строк словарей из файла в фрейм данных

У меня есть скрипт, который я использую для запуска заказов из 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'] внутри цикла и т.д. Я не уверен, должен ли я заполнять этот фрейм данных в цикле или путем захвата и записи ответа и последующей его обработки. Ценю ваш совет.

То, что вы ожидаете, — это снимок экрана файла excel, а то, что вы получаете, — это снимок экрана объекта json (похоже, он имеет те же данные, что и в файле excel). Что именно вы надеетесь получить? То, что у вас есть, имеет неправильный формат или у него неправильные данные (или и то, и другое)?

Ben Borchard 15.11.2022 15:53

Правильные данные, неправильный формат. Мне кажется, что у меня есть 3 словаря (приложенных к текстовому файлу ответа), которые были созданы в результате повторения цикла заказов, которые я запускал в Binance из файла «orderparameters.csv». Я хочу превратить эти 3 словаря в 1 новый фрейм данных.

user20384302 16.11.2022 00:11
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если я правильно понял ваш вопрос, вы можете просто сделать следующее:

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 из первого кадра данных. Я хочу создать новый фрейм данных из ответа

user20384302 16.11.2022 00:03

Да. Это то, что делает мой код: использует ваши заказы, отправляет каждый из них клиенту, получает ответы и создает DataFrame из списка ответов, которые, как я предполагаю, являются объектами json.

Filip 16.11.2022 14:06

Ах, конечно. Да, идеально. Я недостаточно хорошо разбираюсь в коде, чтобы понять это. Спасибо

user20384302 17.11.2022 01:59
Ответ принят как подходящий

Похоже, вы возвращаете строки 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 в строку, но это нормально, так как я могу изменить его обратно при последующей обработке. Бен, ты легенда. Весьма признателен!

user20384302 16.11.2022 01:12
eval превращает строку в словарь. Если вы просто возвращаете словарь, вы можете использовать его напрямую и избежать ненужных преобразований. Я предполагал, что вы получаете строку обратно
Ben Borchard 17.11.2022 21:05

Однако полезно знать о функции eval. Обязательно начну использовать. Потрясающе 👏

user20384302 18.11.2022 22:36

Другие вопросы по теме