在熊猫中将MM:SS列隐藏为HH:MM:SS列?

时间:2019-12-18 13:16:06

标签: pandas datetime types timedelta

在Pandas中将MM:SS列转换为HH:MM:SS列。我尝试了所有可能的方法,例如更改数据类型以及to_datetime和to_timedelta,但我无法涵盖该系列。请帮助某人。我收到如下错误:

(此处的芯片时间为MM:SS格式,我想更改为HH:MM:SS)

df2["ChipTime"]=pd.to_datetime(df2.ChipTime, unit="hour").dt.strftime('%H:%M:%S')
  

ValueError:无法投放小时数

df2["ChipTime"]=pd.to_timedelta(df2["ChipTime"])
  

ValueError:预期的hh:mm:ss格式

df2["ChipTime"]=df2["ChipTime"].astype(int)
  

ValueError:以10为底的int()无效文字:“ 16:48”

我尝试了更多的方法,以上是其中的一些方法,我是Pandas的初学者,因此,如果我有任何失误,请原谅。谢谢

1 个答案:

答案 0 :(得分:0)

如果将值转换为日期时间,则在to_datetime中添加带有参数格式的默认年,月,日,如果可能的话,请按Series.dt.time将值转换为时间。

df2 = pd.DataFrame({'ChipTime':['16:48','10:48']})

df2["ChipTime1"]=pd.to_datetime(df2.ChipTime, format="%M:%S")
df2["ChipTime11"]=pd.to_datetime(df2.ChipTime, format="%M:%S").dt.time

或者对于时间增量,将to_timedelta添加00:作为默认小时:

df2["ChipTime2"]=pd.to_timedelta('00:' + df2["ChipTime"]) 
print (df2)
  ChipTime           ChipTime1 ChipTime11 ChipTime2
0    16:48 1900-01-01 00:16:48   00:16:48  00:16:48
1    10:48 1900-01-01 00:10:48   00:10:48  00:10:48