【发布时间】:2020-01-22 21:05:55
【问题描述】:
您好,任何想法如何将 timedelta 对象转换为需要根据分钟或小时进行概括的 pandas 中的浮点数,即 00:06:46.221000 至 6.46 分钟或 01:06:76.341000 到 66.76 分钟
谢谢
【问题讨论】:
-
与副本相同的想法,但用分钟,除以一分钟而不是一小时
您好,任何想法如何将 timedelta 对象转换为需要根据分钟或小时进行概括的 pandas 中的浮点数,即 00:06:46.221000 至 6.46 分钟或 01:06:76.341000 到 66.76 分钟
谢谢
【问题讨论】:
如果你使用的是 Python2.7/3.2 或更高版本,可以使用以下方法(其中 time_delta_obj 是你的 timedelta 对象):
time_minutes = time_delta_obj.total_seconds()/60.0
在 Python 3.2 或更高版本中,您可以简单地使用:
time_minutes = time_delta_obj/datetime.timedelta(minutes=1)
请参阅Python 3.2 - datetime and time 和timedelta.total_seconds() 了解更多信息。
要将其应用于 pandas 数据框,请使用 apply():
def convert_to_minutes(time_delta_obj):
return time_delta_obj.total_seconds()/60.0
或
def convert_to_minutes(time_delta_obj):
return time_delta_obj/datetime.timedelta(minutes=1)
然后对于 df 的名为 'time_diff' 的列使用:
df['time_diff'] = df['time_diff'].apply(convert_to_minutes)
【讨论】:
Timedelta(minutes=1)。
您可以将Series 与Timedelta(minutes=1) 分开。确实:
>>> df
col
0 00:06:46.221000
1 00:03:12.456000
2 00:02:07.123456
>>> df['col'] / pd.Timedelta(minutes=1)
0 6.770350
1 3.207600
2 2.118724
Name: col, dtype: float64
【讨论】: