Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:将秒数转换为时间增量或时间_Python_Pandas_Datetime_Dataframe - Fatal编程技术网

Python 熊猫:将秒数转换为时间增量或时间

Python 熊猫:将秒数转换为时间增量或时间,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我在一个数据帧中有一定的秒数,比如说: s = 122 我想将其转换为以下格式: 00:02:02.0000 为此,我尝试通过以下方式使用日期时间: pd.to_datetime(s, format='%H:%M:%S.%f') 但是,这不起作用: ValueError:时间数据122与格式“%H:%M:%S.%f”不匹配(匹配) 我还尝试使用unit='ms'而不是格式,但是我得到的日期早于时间。 如何修改代码以获得所需的转换 如果可能的话,需要在数据帧中使用pandas 编辑:下面的

我在一个数据帧中有一定的秒数,比如说:

s = 122
我想将其转换为以下格式:

00:02:02.0000
为此,我尝试通过以下方式使用日期时间:

 pd.to_datetime(s, format='%H:%M:%S.%f')
但是,这不起作用:

ValueError:时间数据122与格式“%H:%M:%S.%f”不匹配(匹配)

我还尝试使用
unit='ms'
而不是格式,但是我得到的日期早于时间。 如何修改代码以获得所需的转换

如果可能的话,需要在数据帧中使用pandas

编辑:下面的jezrael和MedAli解决方案都是有效的,但是jezrael解决方案的优点是不仅可以使用整数,还可以使用Datetime.time作为输入

与将秒转换为纳秒一起使用:

df = pd.DataFrame({'sec':[122,3,5,7,1,0]})

df['t'] = pd.to_timedelta(df['sec'] * 10**9)

print (df)
   sec        t
0  122 00:02:02
1    3 00:00:03
2    5 00:00:05
3    7 00:00:07
4    1 00:00:01
5    0 00:00:00

您可以按如下方式编辑代码以获得所需的结果:

df = pd.DataFrame({'sec':[122,3,5,7,1,0]})
df['time'] = pd.to_datetime(df.sec, unit="s").dt.time
输出:

In [10]: df
Out[10]: 
   sec      time
0  110  00:01:50
1    3  00:00:03
2    5  00:00:05
3    7  00:00:07
4    1  00:00:01
5    0  00:00:00

我建议使用
timedelta
-
datetime.timedelta(seconds=s)
这不是重复的,因为我试图使用Pandas函数实现这一点,而不是使用标准库中的字符串日期。谢谢,但这对整个数据帧有效吗?太好了!正是我缺少的功能!多亏了lotYes,
timedelta
s和
time
s之间的优势在于本地支持