首页 > 解决方案 > 熊猫如何在月底前获得n天的日期

问题描述

假设我有一个数据框,第一列是股票交易日期。为方便起见,我在这里用数字表示日期。

data = pd.DataFrame({'date': [1,2,3,1,2,3,4,1,2,3],
                     'value': range(1, 11)})

我有另一个包含月末日期的数据框。所以首先我可以从这样的数据中获取月末行。

   date value
2  3.0  3.0
6  4.0  7.0
9  3.0  10.0

我想获取monthend前n天的数据,例如1-day before

   date value
1  2.0  2.0
5  3.0  6.0
8  2.0  9.0

我该如何编码。

标签: python-3.xpandas

解决方案


我正在使用cumsumwithgroupby

df1=data.groupby(data.date.eq(1).cumsum()).tail(1)
df1
Out[208]: 
   date  value
2     3      3
6     4      7
9     3     10

df2=data.loc[df1.index-1]
df2
Out[213]: 
   date  value
1     2      2
5     3      6
8     2      9

推荐阅读