Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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_Time - Fatal编程技术网

Python 将秒显示为分和秒

Python 将秒显示为分和秒,python,time,Python,Time,我是Python新手,对如何做一些可能很琐碎的事情有点困惑 我有一个熊猫数据框,其中有一列包含以秒为单位的时间 DF ID Call_Duration 1 127 2 153 3 23 4 87 5 96 我想将其显示为以分钟和秒为单位显示时间的新列: MM:SS 我曾尝试在熊猫中使用“时间增量”,但它显示的内容远远超出了我的需要(精确到天): 我还发现了一个可以用于单个条目的函数,但不确定如何调整它以用于dataframe列,而不是将其放入循环中 def format_duration(se

我是Python新手,对如何做一些可能很琐碎的事情有点困惑

我有一个熊猫数据框,其中有一列包含以秒为单位的时间

DF
ID Call_Duration
1 127
2 153
3 23
4 87
5 96
我想将其显示为以分钟和秒为单位显示时间的新列: MM:SS

我曾尝试在熊猫中使用“时间增量”,但它显示的内容远远超出了我的需要(精确到天):

我还发现了一个可以用于单个条目的函数,但不确定如何调整它以用于dataframe列,而不是将其放入循环中

def format_duration(seconds):
    minutes, seconds = divmod(seconds, 60)
    hours, minutes = divmod(minutes, 60)
    return '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)

尝试使用您的
格式\u duration
,使用dataframe.apply,指定axis=1:


编辑:我在内联代码中添加了一些注释。这应该是答案-如果没有请告诉我!要将秒转换为分和秒,请执行以下操作:

def separate(seconds):
    '''This functions separates seconds into a (minutes, seconds) tuple.'''

    return (
        floor(seconds / 60),   # devide by 60 and remove remainder
        remain  = seconds % 60 # take away 60 until less than 60 (modulo)
    )

这并没有真正回答这个问题:“不确定如何调整它以使其适用于数据帧列,而不是将其放入循环。”也就是说,这确实是一个数据帧问题。我真的不知道。但这确实提供了原始数据,而不是显示数据。这就是我要找的。但我最终还是使用了map:calls_out['minutes']=calls_out['call_duration']。map(format_duration)很好-很高兴你把它整理好了。如果有助于达成解决方案,请接受我的回答。
def format_duration(seconds):
    minutes, seconds = divmod(seconds, 60)
    hours, minutes = divmod(minutes, 60)
    return '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)
import pandas as pd

frame = pd.read_csv('test.csv')
print(frame)

def format_duration(row):
    seconds = row.Call_Duration  ## changed this
    minutes, seconds = divmod(seconds, 60)
    hours, minutes = divmod(minutes, 60)
    return '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)

frame['duration'] = frame.apply(format_duration, axis=1)
## now frame has a new column with the desired results
print(frame)

   ID  Call_Duration  duration
0   1            127  00:02:07
1   2            153  00:02:33
2   3             23  00:00:23
3   4             87  00:01:27
4   5             96  00:01:36
def separate(seconds):
    '''This functions separates seconds into a (minutes, seconds) tuple.'''

    return (
        floor(seconds / 60),   # devide by 60 and remove remainder
        remain  = seconds % 60 # take away 60 until less than 60 (modulo)
    )