2016-12-19 6 views
1

私は日付の列にマージしたい2つのデータフレームを持っています。Pandas Merge Datetimeで2つの異なるサイズのデータ​​フレーム

まずデータフレームは、日付時刻を保持します。

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 

2つ目は、毎日それを保持している:

> Date,Col3 
> 
> 2015-01-01 | daily something1 
> 
> 2015-01-02 | daily something2 

-

私は日中になるように24時間日付欄にマージしたいです第2のデータフレームによって取られた同じ毎日の特徴を有する。

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 

いくつかのコードを記述することによって行うことができますが、これを行うにはjoinまたはmergeを使用できますか?左、右の結合でそれをやろうとしましたが、できませんでした。

答えて

0

以下の2つのデータフレームを、説明した方法で結合しましょう。これを達成するための素敵なオンライナーがあるかどうかは分かりませんが、私はそれを見たいですが、この方法が有効です。

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 
関連する問題