python指定间隔内数据_python – 在pandas中重新采样不规则间隔的数据

本文探讨了如何在Pandas中对不规则间隔的数据进行重采样,通过设置时间列'时间'为索引并使用pd.to_datetime转换,然后使用resample方法以小时或月为频率进行平均操作。示例代码展示了如何从不规则的日期列表中创建DataFrame,并将其重新采样到每小时或每月的平均值。
摘要由CSDN通过智能技术生成

是否可以在不规则间隔的数据上使用重采样? (我知道文档说它是“重新采样常规时间序列数据”,但我想尝试它是否适用于不规则数据.也许它没有,或者我做错了.)

在我的实际数据中,我通常每小时有2个样本,它们之间的时间差通常为20到40分钟.所以我希望将它们重新采样到一个普通的小时系列.

为了测试我是否正确使用它,我使用了一些随机的日期列表,所以它可能不是一个最好的例子,但至少一个适合它的解决方案将非常强大.这里是:

fraction number time

0 0.729797 0 2014-10-23 15:44:00

1 0.141084 1 2014-10-30 19:10:00

2 0.226900 2 2014-11-05 21:30:00

3 0.960937 3 2014-11-07 05:50:00

4 0.452835 4 2014-11-12 12:20:00

5 0.578495 5 2014-11-13 13:57:00

6 0.352142 6 2014-11-15 05:00:00

7 0.104814 7 2014-11-18 07:50:00

8 0.345633 8 2014-11-19 13:37:00

9 0.498004 9 2014-11-19 22:47:00

10 0.131665 10 2014-11-24 15:28:00

11 0.654018 11 2014-11-26 10:00:00

12 0.886092 12 2014-12-04 06:37:00

13 0.839767 13 2014-12-09 00:50:00

14 0.257997 14 2014-12-09 02:00:00

15 0.526350 15 2014-12-09 02:33:00

现在我想重新采样这些例如每月:

df_new = df.set_index(pd.DatetimeIndex(df['time']))

df_new['fraction'] = df.fraction.resample('M',how='mean')

df_new['number'] = df.number.resample('M',how='mean')

但我得到TypeError:只对DatetimeIndex,TimedeltaIndex或PeriodIndex有效,但得到了’RangeIndex’的实例 – 除非我在分配datetime索引时做错了,它必须是由于不规则性造成的?

所以我的问题是:

>我正确使用它吗?

>如果1 == True,是否没有直接的方法来重新采样数据?

(我只看到一个解决方案,首先重新索引数据以获得更精细的间隔,在两者之间插入值,然后将其重新索引到每小时间隔.如果是这样,那么关于正确执行reindex的问题将很快出现.)

最佳答案 您不需要显式使用DatetimeIndex,只需将’time’设置为索引,只要您的’time’列已使用

pd.to_datetime或其他方法转换为datetime,pand就会处理剩下的时间.此外,如果您使用相同的方法,则无需单独重新采样每个列;只需在整个DataFrame上执行此操作.

# Convert to datetime, if necessary.

df['time'] = pd.to_datetime(df['time'])

# Set the index and resample (using month start freq for compact output).

df = df.set_index('time')

df = df.resample('MS').mean()

结果输出:

fraction number

time

2014-10-01 0.435441 0.5

2014-11-01 0.430544 6.5

2014-12-01 0.627552 13.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值