python - 将每日数据分配给分钟数据 Pandas Dataframe
问题描述
亲爱的,我有以下问题要解决:我有一个包含分钟数据 (df.minute) 的 Pandas 数据框和一个包含每日数据 (df.daily) 的第二个数据框。分钟数据不是同质的:在某些日子里可能会有更多的观察结果。目标是将 df.daily 中包含的数据分配给 df.minute 换句话说,对于 df.daily 中的每一天,获取数据并将其分配给 df.minute 中日期对应的所有行。我很确定这可以在不使用循环的情况下完成。非常感谢
df.minute
time value
2016-07-30 17:00:00 102.00
2016-07-30 17:01:00 102.12
2016-07-30 17:02:00 102.00
2016-07-30 17:03:00 102.99
2016-07-30 17:04:00 102.80
...
2016-07-31 11:40:00 100.45
2016-07-31 11:41:00 100.52
2016-07-31 11:42:00 100.55
2016-07-31 11:43:00 100.50
2016-07-31 11:44:00 100.00
...
2016-08-02 12:15:00 102.50
2016-08-02 12:16:00 102.54
2016-08-02 12:17:00 102.58
2016-08-02 12:18:00 102.65
2016-08-02 12:19:00 102.49
...
df.daily
time value
2016-07-29 0.1
2016-07-30 0.2
2016-07-31 0.3
2016-08-01 0.4
2016-08-02 0.5
2016-08-03 0.6
2016-08-04 0.7
...
结果应该是
df.minute
time value
2016-07-30 17:00:00 0.2
2016-07-30 17:01:00 0.2
2016-07-30 17:02:00 0.2
2016-07-30 17:03:00 0.2
2016-07-30 17:04:00 0.2
...
2016-07-31 11:40:00 0.3
2016-07-31 11:41:00 0.3
2016-07-31 11:42:00 0.3
2016-07-31 11:43:00 0.3
2016-07-31 11:44:00 0.3
...
2016-08-02 12:15:00 0.5
2016-08-02 12:16:00 0.5
2016-08-02 12:17:00 0.5
2016-08-02 12:18:00 0.5
2016-08-02 12:19:00 0.5
...
解决方案
df1['new'] = df1['time'].dt.floor('d').map(df2.set_index('time')['value'])
print (df1)
time value new
0 2016-07-30 17:00:00 102.00 0.2
1 2016-07-30 17:01:00 102.12 0.2
2 2016-07-30 17:02:00 102.00 0.2
3 2016-07-30 17:03:00 102.99 0.2
4 2016-07-30 17:04:00 102.80 0.2
5 2016-07-31 11:40:00 100.45 0.3
6 2016-07-31 11:41:00 100.52 0.3
7 2016-07-31 11:42:00 100.55 0.3
8 2016-07-31 11:43:00 100.50 0.3
9 2016-07-31 11:44:00 100.00 0.3
10 2016-08-02 12:15:00 102.50 0.5
11 2016-08-02 12:16:00 102.54 0.5
12 2016-08-02 12:17:00 102.58 0.5
13 2016-08-02 12:18:00 102.65 0.5
14 2016-08-02 12:19:00 102.49 0.5
推荐阅读
- macos - 在 macOS 上获取文件的“锁定”状态
- node.js - 如何使用“graphql-compose-elasticsearch”重构 GraphQL 模式以将 GraphQL 查询转换为 Elasticsearch 查询?
- c++ - 在 C++ 中为trap 生成随机优先级
- api - Twitter 广告 API 错误:INSUFFICIENT_USER_AUTHORIZED_PERMISSION。如何解决?
- common-lisp - 使用 hunchentoot 重定向到 https
- python - 如何在字典和列表之间找到匹配项以从匹配项中创建新列表?
- node.js - node.js 查询不返回结果,但在 mongo shell 中返回
- ruby-on-rails - 在 yAxis 中拉伸字体以在 PrawnPDF 上呈现
- swift - 如何将以下代码从 Swift 2 转换为 Swift 5?
- c# - 代码正在运行,但 UPDATE 语句不更新数据