#python #pandas
Вопрос:
Объект API — ответа, из которого я пытаюсь построить фрейм данных, можно найти здесь: https://github.com/ahoy0/Stack-Overflow-Question/blob/main/SO Object
Отредактируйте Это одна из самых сложных структур данных, с которыми я до сих пор работал, поэтому я также ценю любое руководство о том, как концептуально подойти к этому.
Ранее я пытался добавить каждую точку данных (строки) непосредственно в кадр данных с помощью цикла for, но с каждой итерацией перезаписывал предыдущую запись. После этого катастрофического сбоя я решил сделать это, создав серию для каждого столбца и добавив ее. Вместо того, чтобы создавать серию и добавлять ее, как я мог бы повторить ответ API, не перезаписывая предыдущий индекс фрейма данных?
Вот моя попытка, которая не сработала:
ochain = #(object from above link)
df = pd.DataFrame(columns=["Strike Price"])
for index in ochain['OptionChainResponse']['OptionPair']:
df["Strike Price"] = index['Call']['strikePrice']
Вот мой временный обходной путь:
df = pd.DataFrame(columns=["Strike Price"])
strikes = pd.Series(ochain['OptionChainResponse']['OptionPair'][0]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][1]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][2]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][3]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][4]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][5]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][6]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][7]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][8]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][9]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][10]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][11]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][12]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][13]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][14]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][15]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][16]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][17]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][18]['Call']['strikePrice'],
ochain['OptionChainResponse']['OptionPair'][19]['Call']['strikePrice'])
df["Strike Price"].append(strikes)
Комментарии:
1. Непонятно, о чем вы спрашиваете. Приведите минимальный воспроизводимый пример, укажите свое мнение и то, в чем именно заключалась ваша проблема, и ожидаемый результат. И самое главное, не зацикливайтесь на кадрах данных, если только вам действительно не нужно.
2. Привет, Забоп, пожалуйста, ознакомьтесь с изменениями, которые я внес. Делает ли это все более ясным? Спасибо, что нашли время ответить, я действительно ценю это.
3. Да, это возможно, но вы определенно не хотите поступать таким образом. Вместо этого добавьте в список, а затем добавьте этот список в качестве столбца в свой фрейм данных
4.Ваша проблема,
df[column] = scalar_value
не добавляется. Что должно быть очевидно, так как вы используетеcontainer[key] = item
синтаксис, который обычно не добавляется, он записывает в определенный ключ. В этом случае для apd.DataFrame
он записывает скалярное значение в столбец*. Вы могли бы использоватьdf.append
, но опять же, вы не должны5. Нет, просто используйте список.