【发布时间】:2021-03-07 09:44:49
【问题描述】:
我在列表符号中创建了一个股票符号列表,并尝试通过雅虎获取每只股票的数据,并为每只股票制作包含每日股票价格的 csv 文件。
for ticker in symbol:
if not os.path.exists('F&OStocks/{}.csv'.format(ticker)):
df = web.DataReader(ticker+'.NS', 'yahoo', start, end)
df.reset_index(inplace=True)
df.set_index('Date', inplace=True)
df.to_csv('F&OStocks/{}.csv'.format(ticker))
else:
print('Already have {}'.format(ticker))
上面的代码工作得很好,我能够为每只股票制作 csv 文件。接下来,我试图通过从所有 csv 文件中读取数据来创建一个包含所有股票收盘价的新数据框。我使用下面的代码来做到这一点。
main_df = pd.DataFrame()
for ticker in symbol:
df = pd.read_csv('F&OStocks/{}.csv'.format(ticker))
df.set_index('Date', inplace=True)
df.rename(columns = {'Adj Cose': ticker}, inplace=True)
df.drop(['Open','High','Low','Close','Volume'], 1, inplace=True)
if main_df.empty:
main_df = df
else:
main_df.merge(df, how='outer')
print(main_df.head())
main_df.to_csv('F&Ostocks_joined_closes.csv')
我只在 main_df 上获得第一家公司的收盘价,并且只获得头部收盘价(如下表所示)。每个 csv 文件中的所有列都相似。我也尝试过加入而不是合并,但它仍然无法正常工作。
| Date | Adj Close |
|---|---|
| 2015-02-02 | 138.406876 |
| 2015-02-03 | 142.602432 |
| 2015-02-04 | 140.155045 |
| 2015-02-05 | 136.961731 |
| 2015-02-06 | 136.215836 |
【问题讨论】:
-
merge不会在适当的位置修改 df 所以你想要main_df = main_df.merge(df, how='outer')