簡體   English   中英

將日期和小時轉換為日期時間 python pandas

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM