我正在嘗試用Python編寫一個小程序,記錄一年以上的股票投資組合,所以基本上要記錄每筆買/賣,並跟蹤餘額。我正在瀏覽一系列訂單並更新Pandas數據框,在那裏我保留投資組合。該代碼看起來很不起眼,但我很新的大熊貓/ numpy的:python pandas set_value不持久?
orders_book = DataFrame(np.zeros((num_of_days,num_of_companies+1)), ldt_timestamps, columns = book_keys)
for equity_sym in ls_symbols[1:2]:
for trade_date in ldt_timestamps:
if trade_date == ldt_timestamps[0]:
current_number = orders_book.xs(trade_date)[equity_sym]
for transaction in trades:
transaction_date = transaction[0]
transaction_sym = transaction[1]
if ((trade_date == transaction_date) and (equity_sym == transaction_sym)):
transaction_order = transaction[2]
transaction_number = transaction[3]
if str(transaction_order) == 'Buy':
current_number += transaction_number
if str(transaction_order) == 'Sell':
current_number -= transaction_number
orders_book.ix[trade_date,equity_sym, current_number] = current_number
[equity_sym] 我不停的意見說服你,我通過在運行打印我檢查了這個複雜的循環工作確定(如您所見,我使用set_value
更新orders_book
)。然而,當循環結束時,我試試print orders_book['GOOG']
,然後orders_book
看起來就像在開始時,即在循環之前。這是爲什麼?希望你的幫助:)
編輯: 代碼現在改變,並正常工作。這不是Panda的錯,而是代碼中更新/寫入功能的錯誤放置。感謝您的努力!
'set_value'的語義似乎很模糊,它可能會創建一個新的DataFrame。 – Eike 2013-04-05 19:19:54
嘗試做類似'orders_book.ix [trade_date,equity_sym] = current_number'而不是 – 2013-04-05 19:20:39
@ChangShe:不幸沒有幫助 – 2013-04-05 19:28:47