如何解决如何将日期重新采样为 1 分钟条形?
假设我有一个 pandas.DataFrame
喜欢:
val
2020-01-01 12
2020-04-15 38
2020-05-03 19
我如何创建一个 pandas.DataFrame
像:
val
2020-01-01 00:00:00 12
2020-01-01 00:01:00 12
...
2020-01-01 23:58:00 12
2020-01-01 23:59:00 12
2020-04-15 00:00:00 38
2020-04-15 00:01:00 38
...
2020-04-15 23:58:00 38
2020-04-15 23:59:00 38
2020-05-03 00:00:00 19
2020-05-03 00:01:00 19
...
2020-05-03 23:58:00 19
2020-05-03 23:59:00 19
我尝试过 df.resample('1 min').asfreq()
但这给了我从第一行到最后一行的所有分钟数,包括不在原始索引中的所有天数。
解决方法
重新创建示例 df:
dates = [ pd.to_datetime('2020-01-01'),pd.to_datetime('2020-04-15'),pd.to_datetime('2020-05-03') ]
val = [12,38,19]
df = pd.DataFrame({ 'date' : dates,'val' : val})
df = df.set_index('date')
我通常不推荐循环,但感觉这可能是使用循环更自然的情况。这实际上取决于您处理的数据量。无论如何,它有效。 :)
out = pd.DataFrame()
for row in df.itertuples():
bars = pd.date_range(row.Index,row.Index+pd.Timedelta(days=1),freq="T",closed='left')
out = pd.concat([out,pd.DataFrame(data={'val' : row.val},index=bars)])
print(out)
val
2020-01-01 00:00:00 12
2020-01-01 00:01:00 12
2020-01-01 00:02:00 12
2020-01-01 00:03:00 12
2020-01-01 00:04:00 12
... ...
2020-05-03 23:55:00 19
2020-05-03 23:56:00 19
2020-05-03 23:57:00 19
2020-05-03 23:58:00 19
2020-05-03 23:59:00 19
[4320 rows x 1 columns]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。