我有一個帶有 ['Duration'] 列的 Pandas DataFrame(data) 作為 'object' 型別,其持續時間的格式為:'H:%M:%S' 例如 '1:47:54' 有 7 個字符,還有只有分鐘 '%M:%S' 的持續時間,例如 '45:20' 或 '03:20' 有 5 個字符。
我想將此列轉換為 Pandas Time Delta。
但是,似乎我需要使列中的所有行都具有相同長度的字符,因為當我嘗試這樣做時:
data['Duration'] = pd.to_timedelta(data['Duration'])
我得到:“ValueError:預期的 hh:mm:ss 格式”
你知道如何解決這個問題嗎?
是否可以只搜索一次包含“:”的列中的行?
然后在這些行中添加一個帶有 '0:' 的字串?
也許與:
data['Duration'] = '0:' data['Duration'].astype(str)
先感謝您!
uj5u.com熱心網友回復:
您可以使用df.where:
df['Timedelta'] = pd.to_timedelta(df['Duration'].where(df['Duration'].str.len() >= 7,
other='0:' df['Duration']))
print(df)
# Output
Duration Timedelta
0 1:47:54 0 days 01:47:54
1 45:20 0 days 00:45:20
2 03:20 0 days 00:03:20
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467303.html
