python - 如何将 csv 文件中的股票价格放入一个数据框中
问题描述
所以我正在从一个 csv 文件中收集标准普尔 500 指数的数据。我的问题是如何创建一个包含 500 列和所有价格的大型数据框。目前的代码是:
import pandas as pd
import pandas_datareader as web
import datetime as dt
from datetime import date
import numpy as np
def get_data():
start = dt.datetime(2020, 5, 30)
end = dt.datetime.now()
csv_file = pd.read_csv(os.path.expanduser("/Users/benitocano/Downloads/copyOfSandP500.csv"), delimiter = ',')
tickers = pd.read_csv("/Users/benitocano/Downloads/copyOfSandP500.csv", delimiter=',', names = ['Symbol', 'Name', 'Sector'])
for i in tickers['Symbol'][:5]:
df = web.DataReader(i, 'yahoo', start, end)
df.drop(['High', 'Low', 'Open', 'Close', 'Volume'], axis=1, inplace=True)
get_data()
因此,正如代码现在显示的那样,它只是要创建 500 个单独的数据帧,所以我想问如何将它变成一个大数据帧。谢谢!编辑:CSV 文件链接是: https ://datahub.io/core/s-and-p-500-companies
我已经对上面的代码进行了尝试:
for stock in data:
series = pd.Series(stock['Adj Close'])
df = pd.DataFrame()
df[ticker] = series
print(df)
虽然输出只有一列,像这样:
ADM
Date
2020-06-01 38.574604
2020-06-02 39.348278
2020-06-03 40.181465
2020-06-04 40.806358
2020-06-05 42.175167
... ...
2020-11-05 47.910000
2020-11-06 48.270000
2020-11-09 49.290001
2020-11-10 50.150002
2020-11-11 50.090000
为什么只打印一列,而不是其余列?
解决方案
推荐阅读
- ios - 远程 IO 音频单元未从扬声器或远程流中捕获音频
- mockito - org.mockito 无法解析为模块
- jquery - 我的模型中有两种不同类型的条件来检查 lr_no 编号如何检查控制器中是否存在其他条件
- r - GUI 使用 Rstudio 打开,但不是使用 Rscript 从命令提示符打开
- sql - 如何将“2019 年 6 月 20 日”等字符串转换为日期格式以选择日期范围
- c# - 使用表单组件作为方法参数与表单字段
- javascript - 如何制作没有给定值的对象?并使用 javascript 中的用户输入为其赋值
- java - 具有现有日期样式的 Excel 工作表不起作用
- python - 带有多个选择的 Django get_queryset 过滤
- postgresql - 在 Spring Boot 中创建和执行存储过程