python - 如何进行远程数据访问(来自股票市场)并将它们组合成一个数据框?
问题描述
我尝试从晨星获取数据并组合不同的股票,但我无法弄清楚如何正确组合数据。我想按日期组织它,但它只是将数据堆叠在一起。
print('test')
print('testing')
#this program will read data from morningstar and interpret them using pandas
import pandas as pd
import datetime
import numpy as np
import matplotlib.pylab as plt
pd.core.common.is_list_like = pd.api.types.is_list_like
import pandas_datareader.data as web
start = datetime.datetime(2010,1,1) #datetime is (year, month, day)
end = datetime.date.today()
#Getting data from morningstar
microsoft = pd.DataFrame(web.DataReader("MSFT", "morningstar", start, end))
apple = pd.DataFrame(web.DataReader("AAPL","morningstar", start, end))
google = pd.DataFrame(web.DataReader("GOOG", "morningstar", start, end))
stocks = pd.DataFrame({"MSFT": microsoft["Volume"],
"AAPL": apple["Volume"],
"GOOG": google["Volume"]})
print(stocks)
基本上我希望数据看起来像这样:
stock1 stock2 stock3
date1 123 345 234
date2 657 294 553
date3 786 321 933
但结果却是这样:
stock1 stock2 stock3
date1 123 NaN NaN
date2 657 NaN NaN
date3 786 NaN NaN
date1 NaN 345 NaN
date2 NaN 294 NaN
date3 NaN 321 NaN
date1 NaN NaN 234
date2 NaN NaN 553
date3 NaN NaN 933
解决方案
您可以reset_index
在创建新数据框时在最后添加
stocks = pd.DataFrame({"MSFT": microsoft["Volume"].reset_index(level=0,drop=True),
"AAPL": apple["Volume"].reset_index(level=0,drop=True),
"GOOG": google["Volume"].reset_index(level=0,drop=True)})
推荐阅读
- vba - 仅获取 VBA 中的数值
- flutter - 如果我们在 App 中使用了很多插件,是否有机会减慢 Flutter 中的应用程序?
- reactjs - 将值从一个下拉列表传递到另一个下拉列表
- c# - C# 队列管理服务覆盖值
- java - 在 Java 中提交作业时,如何解决 Spark 作业服务器中的“作业加载失败”错误?
- c++ - 定义变量 esp32
- html - 在 Zendesk hbs 中注入 Webfont 图标
- java - 我应该在 EntityManager.detach() 上使用 JPA EntityManager.clear()
- c++ - 我认为我的变量没有正确分配
- python - 如何实现具有点到面距离的 ICP