【发布时间】:2021-08-16 05:33:28
【问题描述】:
我有一个数据集,其中包含一个包含“时间”值的列,但它显示为对象,我想将它们转换为时间,以便我可以执行一个 for 循环来查看时间是否在两次之间。
for i in df['Time']:
if i >= dt.time(21,0,0) and i <= dt.time(7, 30,0) or i >= dt.time(3,0,0) and i <= dt.time(10,0,0) or i >= dt.time(10,30,0) and i <= dt.time(14,0,0):
df['In/Out'] = 'In'
else:
df['In/Out'] = 'Out'
如果时间介于两次之间,我希望代码将新列中的值设置为“In”。 第一次是 (21:00) & (07:30) 第二次是 (03:00) & (10:00) 第三次是 (10:30) & (14:00)
如果时间不在这些范围内,则应将新列中的值设置为“Out”。
【问题讨论】:
-
请提供最少的可重现数据,或者您可以发布 Dataframe 以获得正确的建议。同时,你可以试试
df['Time'] = pd.to_datetime(df['Time'])或df['Time'] = pd.to_datetime(df['Time'], format='%d%b%Y:%H:%M:%S.%f') -
此代码用于将时间转换为 (datetime64[ns])
df['Time'] = pd.to_datetime(df['Time'], format='%H:%M:%S'),但 for 循环确实给出了错误'>=' not supported between instances of 'Timestamp' and 'datetime.time'
标签: python pandas for-loop jupyter