我有一个清单:
[Timedelta('0 days 00:02:39.210526'),
Timedelta('0 days 00:03:29.033333'),
Timedelta('0 days 00:03:36.333333'),
Timedelta('0 days 00:01:04'),
Timedelta('0 days 00:04:05.571428'),
Timedelta('0 days 00:04:00.500000'),
Timedelta('0 days 00:03:54.583333')]
如何从此列表中仅提取时间?
答案 0 :(得分:1)
假设您正在使用datetime
模块并且您的Timedeltas
列表被称为my_timedelta_list
,您可以执行以下操作以获得以秒为单位的时差:
my_times = []
for t in my_timedelta_list:
my_times.append(t.total_seconds())
然后你的my_times
变量会有几秒钟的时差。
然后,您可以将秒转换为您想要的任何时间单位和格式。
答案 1 :(得分:0)
我假设您要将时间组件提取为字符串,即使您的Timedelta
大于1天,也要删除对“天”的所有引用。
一种方法是将Timedelta
转换为规范化datetime
,然后使用time
属性。
以下是将Timedelta
对象转换为字符串的简单方法。
请注意,这会使用第三方库pandas
。
import pandas as pd
lst = [pd.Timedelta('0 days 00:02:39.210526'),
pd.Timedelta('1 days 00:03:29.033333'),
pd.Timedelta('5 days 00:03:36.333333'),
pd.Timedelta('2 days 00:01:04'),
pd.Timedelta('10 days 00:04:05.571428'),
pd.Timedelta('8 days 00:04:00.500000'),
pd.Timedelta('1 days 00:03:54.583333')]
df = pd.DataFrame({'A': lst})
df['B'] = (pd.Timestamp('now').normalize() + df['A']).dt.time
df['C'] = df['A'].astype(str)
print(df)
A B C
0 0 days 00:02:39.210526 00:02:39.210526 0 days 00:02:39.210526000
1 1 days 00:03:29.033333 00:03:29.033333 1 days 00:03:29.033333000
2 5 days 00:03:36.333333 00:03:36.333333 5 days 00:03:36.333333000
3 2 days 00:01:04 00:01:04 2 days 00:01:04.000000000
4 10 days 00:04:05.571428 00:04:05.571428 10 days 00:04:05.571428000
5 8 days 00:04:00.500000 00:04:00.500000 8 days 00:04:00.500000000
6 1 days 00:03:54.583333 00:03:54.583333 1 days 00:03:54.583333000
print(df.dtypes)
A timedelta64[ns]
B object
C object
dtype: object