我一直在处理一个数据帧,其中一列(flight_time
(包含飞行持续时间,所有字符串都有3种不同的格式,例如:
- "CCD_ 2">
- "CCD_ 3">
- "CCD_ 4">
我想将它们全部更改为HH:MM
格式,最后将数据类型从object
更改为time
。
有人能告诉我怎么做吗?
不可能有time
数据类型。您可以拥有datetime64
(pd.DatetimeIndex
(或timedelta64
(pd.TimedeltaIndex
(。在你的情况下,我认为最好有一个TimedeltaIndex
,这样你就可以使用pd.to_timedelta
函数:
df['flight_time2'] = pd.to_timedelta(df['flight_time'])
print(df)
# Output
flight_time flight_time2
0 07 h 05 m 0 days 07:05:00
1 13h 55m 0 days 13:55:00
2 2h 23m 0 days 02:23:00
如果您想要datetime.time
的单独时间,请使用:
df['flight_time2'] = pd.to_datetime(df['flight_time'].str.findall('d+')
.str.join(':')).dt.time
print(df)
# Output
flight_time flight_time2
0 07 h 05 m 07:05:00
1 13h 55m 13:55:00
2 2h 23m 02:23:00
在这种情况下,flight_time2
仍然具有object
数据类型:
>>> df.dtypes
flight_time object
flight_time2 object
dtype: object
但每个值都是datetime.time
:的一个实例
>>> df.loc[0, 'flight_time2']
datetime.time(7, 5)
在第一种情况下,您可以使用矢量化方法,而在第二种版本中是不可能的。此外,您还松开了dt
访问器。