

以下のように「年」「月」「日」「時間」のデータフレームがあり時間は数値で示されている場合、日時のインデックスを (2018−2−1 0:00)
のような形で表す方法はありますでしょうか？

[code]

    YEAR    MONTH   DAY HR
    2018    2   1   0.0
    2018    2   1   0.5
    2018    2   1   1.0
    2018    2   1   1.5
    2018    2   1   2.0
    
[/code]

時間は `0.5 = 30分` で1日48コマで表されています。  
よろしくお願いします。


CC BY-SA 4.0
2018-05-07T13:03:31.613
43844
2020-03-16T08:08:24.423
2020-03-16T08:08:24.423
3060
28185
question
python pandas
数値の時刻を分の時刻へ変換するやりかた

[code]

    import datetime
    # Year, Month, Day, Hour, 
    dt = datetime.datetime(2018, 2, 1, 1)
    
[/code]

datatime型ではだめですか?  
floatで指定できないので、適当に 整数にする必要はありますが。


CC BY-SA 4.0
2018-05-07T14:04:31.577
43845
2018-05-07T14:04:31.577
43844
answer


データフレームが次のようなものであれば、

[code]

    df = pd.DataFrame([[2018, 2, 1, 0.0],
                   [2018, 2, 1, 0.5],
                   [2018, 2, 1, 1.0],
                   [2018, 2, 1, 1.5]],
                   columns=['YEAR', 'MONTH', 'DAY', 'HR'])
    
[/code]

Pandas の to_datetime()で
datetime型に変換できます。ただし、列名が'HR'だとエラーになるので、'HOUR'に変更してから変換するようにします。時間の小数値は問題がないようです。

[code]

    pd.to_datetime(df.rename(columns={'HR': 'HOUR'}))
    
[/code]

これをインデックスにしたいのであれば、他にも列がある場合でも次のように書けます。

[code]

    df.index = pd.to_datetime(df[['YEAR', 'MONTH', 'DAY', 'HR']].rename(columns={'HR': 'HOUR'}))
    
[/code]


CC BY-SA 4.0
2018-05-07T16:07:46.230
43849
2018-05-07T16:07:46.230
15171
43844
answer