У меня есть структура Panda DataFrame, и я хочу добавить к ней еще один столбец, но я не могу сделать это с добавлением, добавлением или вставкой.dataframe добавить новую колонку серии с данными
Я пытаюсь воспроизвести данные портфолио с помощью встроенной функции Panda, потому что этот сценарий не дает мне правильных данных, если период, который я запрашиваю, меньше чем 1,5 года, в то время как данные должны быть получены даже в течение двух дней, если я захочу. Так вот скрипт, который я хочу переписать:
import QSTK.qstkutil.qsdateutil as du
import QSTK.qstkutil.tsutil as tsu
import QSTK.qstkutil.DataAccess as da
import datetime as dt
import matplotlib.pyplot as plt
import pandas as pd
ls_symbols = ["AAPL", "GLD", "GOOG", "$SPX", "XOM"]
dt_start = dt.datetime(2006, 1, 1)
dt_end = dt.datetime(2010, 12, 31)
dt_timeofday = dt.timedelta(hours=16)
ldt_timestamps = du.getNYSEdays(dt_start, dt_end, dt_timeofday)
c_dataobj = da.DataAccess('Yahoo')
ls_keys = ['open', 'high', 'low', 'close', 'volume', 'actual_close']
ldf_data = c_dataobj.get_data(ldt_timestamps, ls_symbols, ls_keys)
**d_data = dict(zip(ls_keys, ldf_data))**
d_data = dict(zip(ls_keys, ldf_data))
является то, что я хочу повторить, потому что он не получает данные, которые я хочу, но мне нужно, чтобы выяснить способ для добавления нового столбца мой дикт. Вот мой сценарий:
from pandas.io.data import DataReader, DataFrame
import QSTK.qstkutil.qsdateutil as du
import QSTK.qstkutil.DataAccess as da
import datetime as dt
def get_historical_data(symbol, source, date_from, date_to):
global data_validator
symbol_data = {}
ls_keys = ['Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
for key in ls_keys:
symbol_data[key] = DataFrame({})
dataframe_open = DataFrame({})
for item in symbol:
print 'Fetching data for:', item
current_data = DataReader(str(item), source, date_from, date_to)
dataframe_open = {item : current_data['Open']}
if len(symbol_data['Open'].columns) == 0:
symbol_data['Open'] = DataFrame(dataframe_open)
else:
**#i want to add the new column here but can't seem to do this.**
#symbol_data['Open'].loc[:item] = DataFrame(dataframe_open)
pass
return symbol_data
P.S. Я называю FUNC с этими параметрами для испытательных целей:
test = get_historical_data(['SPY', 'DIA'], 'yahoo', datetime(2015,1,1), datetime(2015,1,31))
Спасибо, я видел ваше сообщение слишком поздно. Возможно, это работает, но я сделал обходной путь, чтобы на самом деле сначала создать DataFrame, а затем программно заполнить данные во всех столбцах, и таким образом я избежал необходимости добавления нового столбца. –