每月';python中的结束数据

每月';python中的结束数据,python,pandas,Python,Pandas,我对Python非常陌生 我正试图找出如何获得每个数据集(aapl、intc、ebay和amzn)的月末“调整关闭”行 以下是我所做的: 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 sta

我对Python非常陌生

我正试图找出如何获得每个数据集(aapl、intc、ebay和amzn)的月末“调整关闭”行

以下是我所做的:

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)
我把数据框放进去

amazon = amzn
amzn = pd.DataFrame({'AMZN': amazon['Adj Close']})
我希望数据只显示月末的数据,所以我这样做了,但这给了我一个错误:

amzn = amzn.loc[pd.date_range(start, end, freq='BM')]
我怎么才能只在月底展示

我还想创建一个以日期为索引的表格,显示月末所有股票的调整收盘价

我试过了,但没用(上面说有重复的钥匙):

我知道
'BM'
给了我月底,但我似乎找不到使用它的方法


我挠头,一直在寻找;我找不到答案。

根据您的示例,给定一个数据帧:

data = pd.DataFrame({'AMZN': amzn['Adj Close']})
您可以尝试使用
is\u month\u 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()]

如果日期是您的索引,并且您希望使用该月的最新日期对数据框进行子集,请尝试以下操作:
df[df.index.day==df.index.days\u in\u month]

您是否只想要同时也是月底的日期?你可以在datetime索引上进行连接。我想要一个月中有值的最晚一天(2015年2月28日,3月30日…。@Davewards哦,我明白了。。。是的,可以。谢谢非常感谢。这有效->data=pd.DataFrame({'AMZN':AMZN['Adj Close']})。我似乎无法使date.reset_索引正常工作。我还在想:)。
data.reset_index().loc[d2['Date']
    .groupby(pd.DatetimeIndex(data.index)
    .to_period('M')).idxmax()]