没有重采样的时间序列的Pandas子集[英] Pandas Subset of a Time Series Without Resampling

本文是小编为大家收集整理的关于没有重采样的时间序列的Pandas子集的处理方法,想解了没有重采样的时间序列的Pandas子集的问题怎么解决?没有重采样的时间序列的Pandas子集问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个 pandas 数据系列,其中包含一个系列的每日累积回报:

Date    CumReturn
3/31/2017    1
4/3/2017     .99
4/4/2017     .992
 ...        ...
4/28/2017    1.012
5/1/2017     1.011
 ...         ...
5/31/2017    1.022
 ...         ...
6/30/2017    1.033
 ...         ...

我只想要月末值.

Date    CumReturn
4/28/2017    1.012
5/31/2017    1.022
6/30/2017    1.033

因为我只想要月末值,所以重采样不起作用,因为它聚合了中间值.

仅获取原始数据框中显示的月末值的最简单方法是什么?

推荐答案

使用 is_month_end 组件 rel="nofollow noreferrer">.dt 日期访问器:

# Ensure the date column is a Timestamp
df['Date'] = pd.to_datetime(df['Date'])

# Filter to end of the month only
df = df[df['Date'].dt.is_month_end]

将此应用于您提供的数据:

        Date  CumReturn
0 2017-03-31      1.000
5 2017-05-31      1.022
6 2017-06-30      1.033

编辑

要获得营业月结,请使用 BMonthEnd(0) 进行比较:

from pandas.tseries.offsets import BMonthEnd

# Ensure the date column is a Timestamp
df['Date'] = pd.to_datetime(df['Date'])

# Filter to end of the month only
df = df[df['Date'] == df['Date'] + BMonthEnd(0)]

将此应用于您提供的数据:

        Date  CumReturn
0 2017-03-31      1.000
3 2017-04-28      1.012
5 2017-05-31      1.022
6 2017-06-30      1.033

本文地址:https://www.itbaoku.cn/post/1727841.html