簡體   English   中英

將 Object dtype 的 pandas 列轉換為時間日期時間(微秒)

[英]Convert pandas column of Object dtype into time datetime (with micro seconds)

我的 df 看起來像這樣。 我嘗試了很多方法來轉換時間: hour:minute:second microseconds ,但碰壁了。 波紋管是sample.df。 我需要時間和微秒( 00:00:02 948之后的 3 個數字,因此該行中的微秒為:948。如何使 object 的另一列 pandas 能夠與稍后快速矢量化(不迭代)。我不需要年、月、日、日期。只需要時間,以微秒為單位,以 pd 可以接受的方式格式化,比如制作聚合時間間隔等。任何想法都會不勝感激!

idx, time, col2, col3, col4, col5, col6

0 00:00:02 948 41 14 34 36 55

1 00:00:03 228 44 -12 32 41 55

你只有一個“timedelta”,而不是一個日期時間。 因此,通過將其轉換為日期時間,pandas 假定時間在 1900-01-01 之后,因為這就是定義(時間戳為 0)。

我不完全了解您的 output 應該是什么樣子,所以如果我誤解了,請隨時詢問如何更改它。

您可以獨立訪問分鍾/秒/微秒的屬性並將它們格式化如下:

import pandas as pd
df = pd.DataFrame(columns=["time"], data=["00:00:02 948", "00:00:03 228"])
df["time"] = pd.to_datetime(df["time"], format='%H:%M:%S %f').apply(lambda dt: f"{dt.minute:02d}:{dt.second:02d}.{dt.microsecond:06d}")

輸出:

           time
0  00:02.948000
1  00:03.228000

如果您只想獲取秒和微秒,只需從格式中刪除dt.minute

pd.to_datetime(df["time"], format='%H:%M:%S %f').apply(lambda dt: f"{dt.second:02d}.{dt.microsecond:06d}")

        time
0  02.948000
1  03.228000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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