我在Pandas中有一个名为“duration”的数据帧,它的单位是分钟。
我想要一个新的列,以小时:分钟(HH:MM
)的格式给出持续时间。
我在Pandas中有一个名为“duration”的数据帧,它的单位是分钟。
我想要一个新的列,以小时:分钟(HH:MM
)的格式给出持续时间。
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()
返回的包含两个整数的元组作为两个单独的参数。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
最好这样使用:
minutes = 204
print("%02d:%02d" % (divmod(minutes, 60)))
这将产生一个格式良好的输出:03:24
。
如果持续时间超过24:00小时,您可以使用:
df.duration = df.duration.apply(lambda x: '{:02d}:{:02d}'.format(*divmod(x, 60)))
df = pd.DataFrame({'duration': [20, 10, 80, 120, 30, 190]})
df['your_column_with_minutes'].apply(method)
。 - bluesmonk