如何解决在熊猫中重新采样每个组内的数据
我有一个具有不同 id 和可能重叠时间的数据帧,时间步长为 0.4 秒。我想以 0.8 秒的时间步长重新采样每个 id 的平均速度。
time id speed
0 0.0 1 0
1 0.4 1 3
2 0.8 1 6
3 1.2 1 9
4 0.8 2 12
5 1.2 2 15
6 1.6 2 18
可以通过以下代码创建示例
x = np.hstack((np.array([1] * 10),np.array([3] * 15)))
a = np.arange(10)*0.4
b = np.arange(15)*0.4 + 2
t = np.hstack((a,b))
df = pd.DataFrame({"time": t,"id": x})
df["speed"] = pd.DataFrame(np.arange(25) * 3)
time
列被转换为 datetime
类型
df["re_time"] = pd.to_datetime(df["time"],unit='s')
解决方法
尝试使用 groupby:
block_size = int(0.8//0.4)
blocks = df.groupby('id').cumcount() // block_size
df.groupby(['id',blocks]).agg({'time':'first','speed':'mean'})
输出:
time speed
id
1 0 0.0 1.5
1 0.8 7.5
2 1.6 13.5
3 2.4 19.5
4 3.2 25.5
3 0 2.0 31.5
1 2.8 37.5
2 3.6 43.5
3 4.4 49.5
4 5.2 55.5
5 6.0 61.5
6 6.8 67.5
7 7.6 72.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。