![](/img/trans.png)
[英]python/pandas - converting date and hour integers to datetime
[英]convert date and hour to datetime python pandas
使用 Pyhon 3.8,pandas 1.1.2
雷:
df = pd.DataFrame({"date":["2020-07-20", "2020-07-20", "2020-07-20", "2020-07-20"],
"hour":["1", "2", "3", "4"]})
df["datetime"] = df["date"] + " " + df["hour"]
這將創建如下所示的數據框:
date hour datetime
0 2020-07-20 1 2020-07-20 1
1 2020-07-20 2 2020-07-20 2
2 2020-07-20 3 2020-07-20 3
3 2020-07-20 4 2020-07-20 4
我想讓 datetime 列成為實際的 datetime 對象。
期望的輸出是
date hour datetime
0 2020-07-20 1 2020-07-20 01:00:00
1 2020-07-20 2 2020-07-20 02:00:00
2 2020-07-20 3 2020-07-20 03:00:00
3 2020-07-20 4 2020-07-20 04:00:00
我想使用這些數據來繪制時間序列圖。 日期時間格式不需要采用特定格式,只要它在使用 plotly 繪圖時知道遞增順序即可。
提前致謝!
在pandas.to_datetime
之后使用zfill
:
df["datetime"] = df["date"] + " " + df["hour"].str.zfill(2)
pd.to_datetime(df["datetime"])
輸出:
0 2020-07-20 01:00:00
1 2020-07-20 02:00:00
2 2020-07-20 03:00:00
3 2020-07-20 04:00:00
Name: datetime, dtype: datetime64[ns]
其它的辦法
#pad df.hour with 0 on the left
s=df.hour.str.pad(width=2, side='left', fillchar='0')
#concat using df.str.cat
df['datetime']=pd.to_datetime(df['date'].str.cat(s+":00:00", sep=' '))
date hour datetime
0 2020-07-20 1 2020-07-20 01:00:00
1 2020-07-20 2 2020-07-20 02:00:00
2 2020-07-20 3 2020-07-20 03:00:00
3 2020-07-20 4 2020-07-20 04:00:00
在 python 中使用 datetime 模塊的另一種方法。
strftime將日期時間轉換為 str,
strptime將 str 轉換為日期時間。
base_df["datetime"] = base_df["datetime"].apply(lambda row: datetime.strptime(row, "%Y-%m-%d %H"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.