pandas 重新采样日期月末与原始 Dataframe 中的日期匹配

n1bvdmb6  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(139)

我有数据,我想重新采样使用月底的基础上,原来的df,但当我使用df.resample('M').last().月底的日期,我得到的是不同的,从原来的df.见星号标记. 2005-12-31 应该是〉〉2005-12-29.任何建议?什么参数,我应该添加到.resample()?
原始df =

DATE
2005-12-27    1161.707
2005-12-28    1164.143
*2005-12-29    1162.635*
2006-01-02    1171.709
2006-01-03    1184.690
2006-01-04    1211.699

重新采样('M').last()

DATE
2005-11-30    1096.641
*2005-12-31    1162.635*
2006-01-31    1232.321
l7mqbcuq

l7mqbcuq1#

    • 示例**
data = {'2005-12-27': 1161.707,
        '2005-12-28': 1164.143,
        '2005-12-29': 1162.635,
        '2006-01-02': 1171.709,
        '2006-01-03': 1184.69,
        '2006-01-04': 1211.699}
s = pd.Series(data)
s.index = pd.to_datetime(s.index)

输出(s):

2005-12-27    1161.707
2005-12-28    1164.143
2005-12-29    1162.635
2006-01-02    1171.709
2006-01-03    1184.690
2006-01-04    1211.699
dtype: float64
    • 代码**
s.groupby(s.index.to_period('M')).tail(1)

输出:

2005-12-29    1162.635
2006-01-04    1211.699
dtype: float64

如果s未按时间顺序排序,则排序索引

tf7tbtn2

tf7tbtn22#

你不能直接用resample,你应该在临时重置索引后改为groupby.agg

(df.reset_index()
   .groupby(df.index.to_period('M'))
   .agg({'DATE': 'last', 'value': 'last'})
   .set_index('DATE')
)

输出量:

value
DATE                
2005-12-29  1162.635
2006-01-04  1211.699

相关问题