我在Pandas中有一个数据框,其中有一个以分钟为单位的名为“持续时间”的列。
我想获得一个新列,以小时:分钟(HH:MM)的形式给出持续时间。
答案 0 :(得分:3)
假设您的DataFrame如下所示:
df = pd.DataFrame({'duration': [20, 10, 80, 120, 30, 190]})
将pd.to_datetime
与 strftime
一起使用:
pd.to_datetime(df.duration, unit='m').dt.strftime('%H:%M')
0 00:20
1 00:10
2 01:20
3 02:00
4 00:30
5 03:10
dtype: object
答案 1 :(得分:0)
我不熟悉Pandas,但是下面显示了从几分钟到几分钟和几小时进行转换的一般方法:
total_minutes = 374
# Get hours with floor division
hours = total_minutes // 60
# Get additional minutes with modulus
minutes = total_minutes % 60
# Create time as a string
time_string = "{}:{}".format(hours, minutes)
print(time_string) # Prints '6:14' in this example
您还可以使用divmod()
来避免中间步骤:
time_string = "{}:{}".format(*divmod(total_minutes, 60))
这里,*
允许format()
接受divmod()
返回的元组(包含两个整数)作为两个单独的参数。
答案 2 :(得分:0)
最好使用:
"%d:%02d"%(divmod(oggetto, 60))
这样8:1
变成8:01
。
答案 3 :(得分:0)
如果持续时间大于 24:00 小时,您可以使用:
df.duration = df.duration.apply(lambda x: '{:02d}:{:02d}'.format(*divmod(x, 60)))
例如给定一个 df:
df = pd.DataFrame({'duration': [20, 10, 80, 120, 30, 190]})
应用运算符后我们得到: