Python 一个子集如何在每月端点上显示数据帧日期?
我相信这是一个非常简单的问题,所以我非常感谢您的帮助和耐心,因为我对python编程非常陌生。我有一个简单的时间序列数据框,带有每日日期索引和值列。我想在每月的端点(例如1月31日、2月28日、3月31日等)上对该数据帧进行子集。但是,我不确定如何执行此操作 我熟悉xts软件包在R中的一个等效函数: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
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')