我的目標是:
- 將 Yahoo Finance OHLC(開盤價、最高價、最低價和收盤價)資料匯入 Postgres。
- 能夠輕松更新資料。
- 能夠輕松添加或洗掉代碼。
我目前的方法:
- 創建熊貓資料框。
- 將資料轉儲到 .csv
- 從 Postgres 復制
問題:我不知道如何為 A 公司創建一個資料幀,然后為其他公司(目前約有 150 家公司)附加(合并、加入、合并、ECT)資料幀并轉儲到 .cvs。
下面是我的實際代碼和提供所需結果但很笨拙的解決方法。
讓我知道你的想法。
實際(未按預期作業)
import pandas as pd
import yfinance as yf
tickers = ['VIR','PATH']
#ticker = ['VIR']
for ticker in tickers:
df_yahoo = yf.download(ticker,
#start='2000-01-01',
#end='2010-12-31',
progress='True')
df = pd.DataFrame(df_yahoo)
df.insert(0, 'TICKER', ticker)
file_name = "/Users/kevin/Dropbox/Programming/Python/test_data/deleteme.csv"
df.to_csv(file_name)
print(df)
解決方法(作業)
import pandas as pd
import yfinance as yf
import pickle
tickers = ['VIR']
#ticker = ['VIR']
for ticker in tickers:
df_yahoo = yf.download(ticker,
#start='2000-01-01',
#end='2010-12-31',
progress='True')
df = pd.DataFrame(df_yahoo)
df.insert(0, 'TICKER', ticker)
tickers = ['PATH']
#ticker = ['VIR']
for ticker in tickers:
df_yahoo = yf.download(ticker,
#start='2000-01-01',
#end='2010-12-31',
progress='True')
df1 = pd.DataFrame(df_yahoo)
df1.insert(0, 'TICKER', ticker)
frames = [df1, df]
result = pd.concat(frames)
file_name = "/Users/kevin/Dropbox/Programming/Python/test_data/deleteme.csv"
result.to_csv(file_name)
print(df)
uj5u.com熱心網友回復:
鑒于我認為您想要完成的作業,我將這樣做:
# Create a function to load the data and create the frame
# Assumes len(tickers) >= 1
def build_df(tickers):
df = pd.DataFrame(yf.download(tickers[0],
#start='2000-01-01',
#end='2010-12-31',
progress='True'))
df.insert(0, 'TICKER', tickers[0])
for ticker in tickers[1:]:
dx = pd.DataFrame(yf.download(ticker,
#start='2000-01-01',
#end='2010-12-31',
progress='True'))
dx.insert(0, 'TICKER', ticker)
df = pd.concat([df, dx])
return df
然后呼叫函式來組裝所需的DF,如下所示:
result = build_df(tickers)
最后,將完成的幀輸出到CSV
file_name = "/Users/kevin/Dropbox/Programming/Python/test_data/deleteme.csv"
result.to_csv(file_name)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/350813.html
