Pandas 如何从datetime中提取一天中的时间(pd.Timedelta或datetime.time)?
给出一个包含带有Pandas 如何从datetime中提取一天中的时间(pd.Timedelta或datetime.time)?,pandas,datetime,timedelta,Pandas,Datetime,Timedelta,给出一个包含带有pd.Datetime的列的数据帧,如下所示: import pandas as pd df = pd.DataFrame({ 'name': ['Alice', 'Bob'], 'starttime': ['2020-03-20 15:05:00', '2020-03-20 15:16:00'], }) df['starttime'] = pd.to_datetime(df['starttime']) 如何正确获取一天中的时间作为pd.TimeDelta? 我
pd.Datetime
的列的数据帧,如下所示:
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob'],
'starttime': ['2020-03-20 15:05:00', '2020-03-20 15:16:00'],
})
df['starttime'] = pd.to_datetime(df['starttime'])
如何正确获取一天中的时间作为pd.TimeDelta
?
我知道可以使用df['starttime'].dt.time
提取pythondatetime.time
,但这对我没有帮助,因为我想使用pandas数据类型(即pd.TimeDelta
)来保持时间比较清晰(我必须进行大量比较,我正在寻找干净的代码)。例如,df['starttime'].dt.time>pd.TimeDelta(13:00)
将不起作用。它抛出错误TypeError:无法将类型Timedelta与类型time进行比较,这很有意义
对于如何实现这一目标,我有两个想法:
df['starttime']-df['starttime'].dt.floor('1D')
:这看起来“不错”,但我不确定其含义。我怀疑它能否控制一年中时间变化的两天,即夏季和冬季。我只想忽略那些日子,不管是哪一天,上午11点就是上午11点
pd.to_datetime(df['starttime'].dt.time.astype(str)
:它看起来很粗糙,但我认为它给了我想要的
这种方法合适吗?有没有一种方法可以用熊猫来表示时间?我看到的是Datetime
,Timedelta
和Timestamp
,既然你在处理时间变化,你不应该在数据中添加时区吗?我想我在我的示例中把问题简化了,你可以使用Datetime列n的时间部分是字符串,然后是timedelta,例如
pd.to_timedelta(df['starttime'].dt.time.astype(str)),这会有帮助吗?是的,这是我的第二个选择(见最后的问题),但我想知道这是否是正确的方法?因为您正在处理时间更改,这似乎有点太过草率,您不应该将时区添加到数据中吗?我想我在我的示例中过于简化了这个问题,您可以将datetime列的时间部分转换为字符串,然后转换为timedelta,例如,pd.to_timedelta(df['starttime'].dt.time.astype(str))
,这会有帮助吗?是的,这是我的第二个选择(见最后的问题),但我想知道这是否是正确的方法?对我来说,这似乎有点不妥