python计算csv列平均值_python 3.x - Pandas:重新取样和计算正确的平均值_python-3.x_酷徒编程知识库...

数据的问题,时间不等。import pandas as pd

# Create your dataset

index = pd.date_range('2000/01/01 00:00:00', periods=4, freq='min').to_list()

index[1] = pd.Timestamp('2000/01/01 00:00:10')

values = [0., 100., 100., 200.]

data = pd.Series(values, index)

data

[Out]:

2000-01-01 00:00:00 0.0

2000-01-01 00:00:10 100.0

2000-01-01 00:02:00 100.0

2000-01-01 00:03:00 200.0

当你调用.resample()时,发生这种情况:data.asfreq('T')

[Out]:

2000-01-01 00:00:00 0.0

2000-01-01 00:01:00 NaN

2000-01-01 00:02:00 100.0

2000-01-01 00:03:00 200.0

值被放入相应的分钟中,因为在1和2分钟之间没有数据,值被填充为NaN,

你可以重采样到10秒,向前填充,然后重采样到1分钟。print(data.resample('10s').ffill())

[Out]:

2000-01-01 00:00:00 0.0

2000-01-01 00:00:10 100.0

2000-01-01 00:00:20 100.0

2000-01-01 00:00:30 100.0

2000-01-01 00:00:40 100.0

2000-01-01 00:00:50 100.0

2000-01-01 00:01:00 100.0

2000-01-01 00:01:10 100.0

2000-01-01 00:01:20 100.0

2000-01-01 00:01:30 100.0

2000-01-01 00:01:40 100.0

2000-01-01 00:01:50 100.0

2000-01-01 00:02:00 100.0

2000-01-01 00:02:10 100.0

2000-01-01 00:02:20 100.0

2000-01-01 00:02:30 100.0

2000-01-01 00:02:40 100.0

2000-01-01 00:02:50 100.0

2000-01-01 00:03:00 200.0

print(data.resample('10s').ffill().resample('1t').mean())

[Out]:

2000-01-01 00:00:00 83.333333

2000-01-01 00:01:00 100.000000

2000-01-01 00:02:00 100.000000

2000-01-01 00:03:00 200.000000

在你的问题中,你期望在2分钟到3分钟之间的结果是150,但事实并非如此,因为在这一分钟内的值是100.

也许你会发现.interpolate(method='time')有用,这里有一个到文档的链接。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值