我对Python很陌生。
我试图弄清楚如何为每个数据集(aapl,intc,ebay和amzn)获得月底的“ Adj Close”行。
这是我所做的:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
from pandas.tseries.offsets import Day,MonthEnd
import pandas_datareader.data as web
import datetime
start = datetime.datetime(2013,10,28)
end = datetime.datetime(2018,10,28)
aapl = web.DataReader('AAPL','yahoo',start,end)
intc = web.DataReader('INTC','yahoo',start,end)
ebay = web.DataReader('EBAY','yahoo',start,end)
amzn = web.DataReader('AMZN','yahoo',start,end)
我放入了DataFrame
amazon = amzn
amzn = pd.DataFrame({'AMZN': amazon['Adj Close']})
我希望数据仅显示月末的数据,所以我这样做了,但这给了我一个错误:
amzn = amzn.loc[pd.date_range(start, end, freq='BM')]
如何只显示月份结束?
我还想创建一个表格,以日期作为索引,以显示该月末所有股票的收盘价。
我尝试了一下,但是没有用(它说有重复的密钥):
alldata = pd.merge(aapl,intc,ebay,amzn)
我知道‘BM’
给了我一个月的结局,但是我似乎找不到使用它的方法。
我挠头,一直在寻找;我找不到答案。
答案 0 :(得分:0)
在您的示例中,给出一个DataFrame:
data = pd.DataFrame({'AMZN': amzn['Adj Close']})
您可以尝试使用is_month_end
函数:
data.loc[amzn['Adj Close'].index.is_month_end]
这将产生:
AMZN
Date
2013-10-31 364.029999
2013-12-31 398.790009
2014-01-31 358.690002
...
请注意,如果有值,它将返回该月最后一天的结果。
要获取具有值(但不一定是该月的最后一天)的月份中的最新日期,您可以尝试:
data.reset_index().loc[d2['Date']
.groupby(pd.DatetimeIndex(data.index)
.to_period('M')).idxmax()]
答案 1 :(得分:0)
如果日期是您的索引,并且您希望将数据框与当月的最新日期进行子集化,请尝试以下操作:df[df.index.day == df.index.days_in_month]