将每日数据分配给分钟数据Pandas Dataframe

问题描述 投票:0回答:1

亲爱的,我有以下问题需要解决:我有一个包含分钟数据(df.minute)的Pandas Dataframe和一个包含每日数据的第二个Dataframe(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
...
python pandas dataframe resampling
1个回答
0
投票

使用mapfloordatetimes中移除时间:

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
© www.soinside.com 2019 - 2024. All rights reserved.