Python 一个子集如何在每月端点上显示数据帧日期?

Python 一个子集如何在每月端点上显示数据帧日期?,python,pandas,date,time-series,endpoint,Python,Pandas,Date,Time Series,Endpoint,我相信这是一个非常简单的问题,所以我非常感谢您的帮助和耐心,因为我对python编程非常陌生。我有一个简单的时间序列数据框,带有每日日期索引和值列。我想在每月的端点(例如1月31日、2月28日、3月31日等)上对该数据帧进行子集。但是,我不确定如何执行此操作 我熟悉xts软件包在R中的一个等效函数: mends\u xts可通过M频率字符串获得月末: idx1 = pd.date_range('2018-01-01', periods=3, freq='M') ts_sub = ts[ts=id

我相信这是一个非常简单的问题,所以我非常感谢您的帮助和耐心,因为我对python编程非常陌生。我有一个简单的时间序列数据框,带有每日日期索引和值列。我想在每月的端点(例如1月31日、2月28日、3月31日等)上对该数据帧进行子集。但是,我不确定如何执行此操作

我熟悉xts软件包在R中的一个等效函数:


mends\u xts可通过
M
频率字符串获得月末:

idx1 = pd.date_range('2018-01-01', periods=3, freq='M')
ts_sub = ts[ts=idx1]
输出:

2018-01-31    30
2018-02-28    58
2018-03-31    89

可通过
M
频率字符串获取月末:

idx1 = pd.date_range('2018-01-01', periods=3, freq='M')
ts_sub = ts[ts=idx1]
输出:

2018-01-31    30
2018-02-28    58
2018-03-31    89

您只需使用
重新采样

ts_sub = ts.resample('M')
但即使是不完整的一个月,您也会得到一个值

2018-01-31    30
2018-02-28    58
2018-03-31    89
2018-04-30    99
Freq: M, dtype: int64
如果不需要,可以提取相关索引:

ts_sub = ts.loc[pd.date_range(ts.index.min(), ts.index.max(), freq='M')]

您只需使用
重新采样

ts_sub = ts.resample('M')
但即使是不完整的一个月,您也会得到一个值

2018-01-31    30
2018-02-28    58
2018-03-31    89
2018-04-30    99
Freq: M, dtype: int64
如果不需要,可以提取相关索引:

ts_sub = ts.loc[pd.date_range(ts.index.min(), ts.index.max(), freq='M')]

谢谢,但这假设idx1中的日期是原始ts中的日期,不可否认,这就是我提出问题的方式。但是,假设在时间序列中有一个月在30日结束,但该月的时间序列中的数据仅上升到28日,则该方法不会返回特定时间序列当月的最后日期。你知道如何从时间序列本身获取月份端点吗?IIUC你正在寻找Serge Ballesta在下面回答的第二部分中所写的:
idx1=pd.date\u range(ts.index.min(),ts.index.max(),freq='M')
谢谢,但这假设idx1中的日期在原始的ts中,这是公认的,这就是我提出问题的方式。但是,假设在时间序列中有一个月在30日结束,但该月的时间序列中的数据仅上升到28日,则该方法不会返回特定时间序列当月的最后日期。你知道如何从时间序列本身获取月份端点吗?IIUC你正在寻找Serge Ballesta在下面回答的第二部分中所写的:
idx1=pd.date\u range(ts.index.min(),ts.index.max(),freq='M')