DataFrame.resample(freq)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataFrame.resample(freq)相关的知识,希望对你有一定的参考价值。

参考技术A DataFrame.resample(freq),将数据基于时间列以 freq 作为频度对全局数据做重采样,计算出分段数据和、均值、方差等指标;下面例子中原数据的索引是 Datatime 数据格式,以月为时间单位求出各列数据的平均值。

M 全称 Bussiness Month,是商业月的意思,在 Pandas 中称为 DataOffset,除了月之外,还提供年、日、秒、小时、分…等作为采样单位,当然也可以自定义。

pandas中datetime相关

Python Dataframe.resample() 从 datetimeindex 中删除时间

【中文标题】Python Dataframe.resample() 从 datetimeindex 中删除时间【英文标题】:Python Dataframe.resample() deletes time from datetimeindex 【发布时间】:2017-12-03 11:53:13 【问题描述】:

由于某种原因,重采样到 24H1D 会缩短 DateTimeIndex 的时间。

我正在使用 蟒蛇:3.5.3/康达 numpy:1.11.3 熊猫:0.20.2

df = pd.read_csv(inFile, parse_dates=True)

print(df.head())
df = df.resample("1D").agg('open':'first','high':'max','low' :'min','close': 'last','volume': 'sum').dropna()

print(df.head()

第一个打印语句

第二

【问题讨论】:

您的期望是什么?这对我来说似乎很正常。 如果您检查索引,您会看到它有一个 freq 属性,当您重新采样时,它会从 None 变为 'D'。 2年前的这个答案中对此进行了某种解释,并且看起来无法更改(至少在2年前)***.com/questions/27607974/…无论如何,请注意这是一个显示问题,索引类型有没有改变。 @ayhan - 我也想看看打印的时间 (00:00:00) @JohnE:是的,索引类型是正确的。但是当我在上面运行 strptime 时,它​​会抱怨: ValueError: time data '2017-05-30' does not match format '%Y-%m-%d %H:%M:%S' 但是最大值、最小值或最后值没有出现在 00:00?做一个聚合,你会从每小时到每天的数据。如果您只获得第一个值,但对于其他值,我会理解,我认为该索引是错误的。 【参考方案1】:

想通了

df.index = pd.to_datetime(df.index.format(formatter=lambda x: x.strftime('%Y-%m-%d %H:%M:%S'))) 

【讨论】:

以上是关于DataFrame.resample(freq)的主要内容,如果未能解决你的问题,请参考以下文章

Python Dataframe.resample() 从 datetimeindex 中删除时间

pandas 时间序列resample

Pandas中resample方法详解

pandas-时间序列重构-resample

重采样时的时间戳分箱机制

熊猫日期和事件