在csv中获得了像这样的数据
id,date,price
A,2020-05-04 15:00:00,1.2
B,2020-05-04 15:05:00,1.3
A,2020-05-04 16:07:00,1.4
B,2020-05-04 16:07:00,1.5
因此在同一DataFrame中,A有一个时序,B有一个时序。我创建了数据框,然后将索引设置为df.set_index([“ id”,“ date”])`
现在我想升采样到分钟,以便结果对应于如下所示的csv:
id,date,price
A,2020-05-04 15:00:00,1.2
A,2020-05-04 15:01:00,1.2
...
A,2020-05-04 16:06:00,1.2
A,2020-05-04 16:07:00,1.4
B,2020-05-04 15:05:00,1.3
B,2020-05-04 15:06:00,1.3
...
B,2020-05-04 16:06:00,1.3
B,2020-05-04 16:07:00,1.5
但是没有得到df.resample(“ 60S”,level =“ date”)。pad()
发生的事情,当我省略级别并放置级别时,得到的错误是我只能将其用于“ Datetimeindex但它是Multiindex” “不支持从level =或on =选择上采样,使用.set_index将索引显式设置为类似datetime的错误” ...
我觉得必须有一个简单的解决方案...?在一个数据集中有一个系列的多个实例很常见吗?可以肯定的是,我可以拆分数据帧并在之后合并...还有一些使用石斑鱼的帖子,但对我来说听起来太复杂了,听起来好像级别参数一定是解决方案...
问题来源:stackoverflow
创建DatetimeIndex
并使用DataFrame.groupby
与DataFrameGroupBy.resample
链接:
df = df.set_index("date").groupby('id').resample("60S").pad()
print (df)
id price
id date
A 2020-05-04 15:00:00 A 1.2
2020-05-04 15:01:00 A 1.2
2020-05-04 15:02:00 A 1.2
2020-05-04 15:03:00 A 1.2
2020-05-04 15:04:00 A 1.2
.. ...
B 2020-05-04 16:03:00 B 1.3
2020-05-04 16:04:00 B 1.3
2020-05-04 16:05:00 B 1.3
2020-05-04 16:06:00 B 1.3
2020-05-04 16:07:00 B 1.5
[131 rows x 2 columns]
仅用于处理“价格”列,请使用:
df1 = df.set_index("date").groupby('id')['price'].resample("60S").pad().reset_index()
print (df1)
id date price
0 A 2020-05-04 15:00:00 1.2
1 A 2020-05-04 15:01:00 1.2
2 A 2020-05-04 15:02:00 1.2
3 A 2020-05-04 15:03:00 1.2
4 A 2020-05-04 15:04:00 1.2
.. .. ... ...
126 B 2020-05-04 16:03:00 1.3
127 B 2020-05-04 16:04:00 1.3
128 B 2020-05-04 16:05:00 1.3
129 B 2020-05-04 16:06:00 1.3
130 B 2020-05-04 16:07:00 1.5
[131 rows x 3 columns]
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。