【发布时间】:2019-09-05 01:52:29
【问题描述】:
我正在玩 Pandas,看看我是否可以比使用其他工具更好/更快地进行一些股票计算。如果我有一只股票,很容易创建每日计算 L
df['mystuff'] = df['Close']+1
如果我下载的不仅仅是一个代码,它就会变得复杂:
df = df.stack()
df['mystuff'] = df['Close']+1
df = df.unstack()
如果我想使用前一天的“关闭”,它对我来说太复杂了。我想我可能会回去获取单个代码,使用 iloc[i-1] 或类似的东西(我还没有想到)进行任何操作,然后合并数据帧。
如何合并单个代码的两个数据框以获得多索引? 所以:
f1 = web.DataReader('AAPL', 'yahoo', start, end)
f2 = web.DataReader('GOOG', 'yahoo', start, end)
就像
f = web.DataReader(['AAPL','GOOG'], 'yahoo', start, end)
编辑: 这是我能创造的最接近 f 的东西。它不完全一样,所以我不确定我可以用它来代替 f。
f_f = pd.concat(['AAPL':f1,'GOOG':f2},axis=1)
也许我应该尝试在多索引上进行操作,而不是在更简单的数据帧上拆分工作。
完整代码:
import pandas_datareader.data as web
import pandas as pd
from datetime import datetime
start = datetime(2001, 9, 1)
end = datetime(2019, 8, 31)
a = web.DataReader('AAPL', 'yahoo', start, end)
g = web.DataReader('GOOG', 'yahoo', start, end)
# here are shift/diff calculations that I don't knokw how to do with a multiindex
a_g = web.DataReader(['AAPL','GOOG'], 'yahoo', start, end)
merged = pd.concat({'AAPL':a,'GOOG':g},axis=1)
a_g.to_csv('ag.csv')
merged.to_csv('merged.csv')
import code; code.interact(local=locals())
旁注:我不知道如何比较两个csv
【问题讨论】:
-
concat 然后在 ('yahoo',start,end) 上进行分组呢?
-
好吧,你不会得到相同的结果。我可以使用 concat({'AAPL':f...) 但它不像多索引
-
pd.concat(['AAPL':f1,'GOOG':f2},axis=1) 是我能够完成的最接近的事情
-
这个想法是,如果您在两个数据框中都有相同的列,则您不关心 concat 中的多索引。多索引由组处理
-
this 帖子看起来你的行
f = web.DataReader(['AAPL','GOOG'], 'yahoo', start, end)应该可以工作,你得到了什么?