我有一个Pandas系列,由"169:21:5:24"、"54:9:19:29"等字符串组成,分别代表169天21小时5分24秒和54天9小时19分29秒。
我想把它们转换成datetime对象(更好)或者只是秒的整数。
第一次尝试是
pd.to_datetime(series1, format = '%d:%H:%M:%S')
失败并显示错误消息
time data '169:21:5:24' does not match format '%d:%H:%M:%S' (match)
第二次尝试
pd.to_datetime(series1)
也失败了
expected hh:mm:ss format
第一次尝试似乎工作,如果所有的"天"是少于30或31天,但我的数据包括150天,250天等,并没有月值。
最后,
temp_list1 = [[int(subitem) for subitem in item.split(":")] for item in series1]
temp_list2 = [item[0] * 24 * 3600 + item[1] * 3600 + item[2] * 60 + item[3] for item in temp_list1]
已成功将序列转换为秒列表,但这太长。
我想知道是否有Pandas.Series.dt或datetime方法可以处理此类数据。
2条答案
按热度按时间omhiaaxx1#
我想把它们转换成datetime对象(更好)或者秒的整数。
在我看来,你似乎更喜欢寻找一个
timedelta
,因为不清楚今年应该是什么?例如,您可以通过(
ser
您的系列)执行此操作:结果:
timedeltas
:seconds
:datetimes
:qjp7pelc2#
【PyData.Pandas】:pandas.to_datetime使用(并指向)[Python.Docs]:datetime - strftime()和strptime()行为声明(强调是我的):
%d
-月份中的日期作为补零的十进制数。...
%j
-一年中的某一天,表示为用零填充的十进制数。因此,您使用了错误的指令(正确的指令是***%j***):
如图所示,参考年份为 1900(如第二个 URL 中所指定)。如果要使用当前年份,则需要进行一些额外的处理:
总而言之: