[英]Pandas Merge Two Different sized Dataframe on Datetime
我有兩個要在日期列上合並的數據框。
第一個數據框保存日期時間:
DateTime,Date,Hour
2015-01-01 00:00:00 | 2015-01-01 | 00
2015-01-01 00:00:01 | 2015-01-01 | 01
...
2015-01-01 23:00:00 | 2015-01-01 | 23
第二個每天舉行一次:
> Date,Col3
>
> 2015-01-01 | daily something1
>
> 2015-01-02 | daily something2
-
我想在“日期”列上進行合並,以使日期中的24小時具有第二個數據框所采用的相同每日功能。
2015-01-01 00:00:00 | 2015-01-01 | 00 | daily something1
2015-01-01 01:00:00 | 2015-01-01 | 01 | daily something1
...
2015-01-02 00:00:00 | 2015-01-01 | 23| daily something2
可以通過編寫一些代碼來完成,但是我可以使用聯接或合並來做到這一點嗎? 試圖用左,右連接做到這一點,但不能做到這一點。
讓我們按照您描述的方式合並以下兩個數據框。 我不知道是否有一個很好的oneliner可以完成此任務,我想看看一個,但是這種方法有效。
import pandas as pd
df = pd.DataFrame({'DATE': pd.date_range(start='2016-01-01 00:00:00',
freq='12H', periods=10)})
df2 = pd.DataFrame({'DATE': pd.date_range(start='2016-01-01',
freq='D', periods=5),
'VALUE': range(0,5)})
# extract the date from each column
df['DATE_DAY'] = df['DATE'].dt.date
# even though the df2 DATE column only shows the date, it's still in
# a different type (datetime64[ns]), so we have to convert it as well
df2['DATE_DAY'] = df2['DATE'].dt.date
tmp = df.merge(df2, on='DATE_DAY')
>>> tmp
DATE_x DATE_y DATE_DAY VALUE
0 2016-01-01 00:00:00 2016-01-01 2016-01-01 0
1 2016-01-01 12:00:00 2016-01-01 2016-01-01 0
2 2016-01-02 00:00:00 2016-01-02 2016-01-02 1
3 2016-01-02 12:00:00 2016-01-02 2016-01-02 1
4 2016-01-03 00:00:00 2016-01-03 2016-01-03 2
5 2016-01-03 12:00:00 2016-01-03 2016-01-03 2
6 2016-01-04 00:00:00 2016-01-04 2016-01-04 3
7 2016-01-04 12:00:00 2016-01-04 2016-01-04 3
8 2016-01-05 00:00:00 2016-01-05 2016-01-05 4
9 2016-01-05 12:00:00 2016-01-05 2016-01-05 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.