如何使用python将时间转换为00:00:00以获取特定值

球队

我有一个输入和日期,时间的数据集。我只想将输入栏中包含的特定值的时间转换为00:00:00,其他时间将按原样显示。

我尝试了一个代码,它为我提供了00:00:00的特定值,但其他时间显示为NaT。

谁能帮助我解决错误?

我的代码:

df['time_diff']= pd.to_datetime(df['date'] + " " + df['time'],
                    format='%d/%m/%Y %H:%M:%S', dayfirst=True)
mask = df['x3'].eq(5)
df['Duration'] = np.where(df['x3']== 5, df['time_diff'], np.datetime64('NaT') )
df['Duration'] = df['time_diff'].sub(df['Duration']).dt.total_seconds().div(3600)

然后它给了我这个输出:

date	  time	       x3	duration
10/3/2018	6:15:00	        0	NaN
10/3/2018	6:45:00  	5	00:00:00 
10/3/2018	7:45:00	        0	NaN
10/3/2018	9:00:00	        0	NaN
10/3/2018	9:25:00	        0       NaN
10/3/2018	9:30:00	        0	NaN
10/3/2018	11:00:00	0	NaN
10/3/2018	11:30:00	0	NaN
10/3/2018	13:30:00	0	NaN
10/3/2018	13:50:00	5	00:00:00
10/3/2018	15:00:00	0	NaN
10/3/2018	15:25:00	0	NaN
10/3/2018	16:25:00	0	NaN
10/3/2018	18:00:00	0	NaN
10/3/2018	19:00:00	0	NaN
10/3/2018	19:30:00	0	NaN
10/3/2018	20:00:00	0	NaN
10/3/2018	22:05:00	0	NaN
10/3/2018	22:15:00	5	00:00:00
10/3/2018	23:40:00	0	NaN
10/4/2018	6:58:00	        5	00:00:00
10/4/2018	13:00:00	0	NaN
10/4/2018	16:00:00	0	NaN
10/4/2018	17:00:00	0	NaN

但是我期望的输出是:

date	  time	       x3	duration         expected output is
10/3/2018	6:15:00	        0	NaN                    6:15:00
10/3/2018	6:45:00  	5	00:00:00               00:00:00
10/3/2018	7:45:00	        0	NaN                    7:45:00
10/3/2018	9:00:00	        0	NaN                    9:00:00
10/3/2018	9:25:00	        0       NaN                    9:25:00
10/3/2018	9:30:00	        0	NaN                    9:30:00
10/3/2018	11:00:00	0	NaN                    11:00:00
10/3/2018	11:30:00	0	NaN                    11:30:00
10/3/2018	13:30:00	0	NaN                    13:30:00
10/3/2018	13:50:00	5	00:00:00               00:00:00
10/3/2018	15:00:00	0	NaN                    15:00:00
10/3/2018	15:25:00	0	NaN                    15:25:00
10/3/2018	16:25:00	0	NaN                    16:25:00
10/3/2018	18:00:00	0	NaN                    18:00:00
10/3/2018	19:00:00	0	NaN                    19:00:00
10/3/2018	19:30:00	0	NaN                    19:30:00
10/3/2018	20:00:00	0	NaN                    20:00:00
10/3/2018	22:05:00	0	NaN                    22:05:00
10/3/2018	22:15:00	5	00:00:00               00:00:00
10/3/2018	23:40:00	0	NaN                    23:40:00
10/4/2018	6:58:00	        5	00:00:00               00:00:00
10/4/2018	13:00:00	0	NaN                   13:00:00
10/4/2018	16:00:00	0	NaN                   16:00:00
10/4/2018	17:00:00	0	NaN                   17:00:00

耶斯列尔

numpy.where与按条件创建新列一起使用-0 timedelta和将列time转换为timedeltas:

df['Duration'] = np.where(df['x3'].eq(5), np.timedelta64(0), pd.to_timedelta(df['time']))
print (df)
         date      time  x3 Duration
0   10/3/2018   6:15:00   0 06:15:00
1   10/3/2018   6:45:00   5 00:00:00
2   10/3/2018   7:45:00   0 07:45:00
3   10/3/2018   9:00:00   0 09:00:00
4   10/3/2018   9:25:00   0 09:25:00
5   10/3/2018   9:30:00   0 09:30:00
6   10/3/2018  11:00:00   0 11:00:00
7   10/3/2018  11:30:00   0 11:30:00
8   10/3/2018  13:30:00   0 13:30:00
9   10/3/2018  13:50:00   5 00:00:00
10  10/3/2018  15:00:00   0 15:00:00
11  10/3/2018  15:25:00   0 15:25:00
12  10/3/2018  16:25:00   0 16:25:00
13  10/3/2018  18:00:00   0 18:00:00
14  10/3/2018  19:00:00   0 19:00:00
15  10/3/2018  19:30:00   0 19:30:00
16  10/3/2018  20:00:00   0 20:00:00
17  10/3/2018  22:05:00   0 22:05:00
18  10/3/2018  22:15:00   5 00:00:00
19  10/3/2018  23:40:00   0 23:40:00
20  10/4/2018   6:58:00   5 00:00:00
21  10/4/2018  13:00:00   0 13:00:00
22  10/4/2018  16:00:00   0 16:00:00
23  10/4/2018  17:00:00   0 17:00:00

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将时间设置为00:00:00

无法将'0000-00-00 00:00:00'转换为TIMESTAMP

获取异常,例如“无法将值'0000-00-00 00:00:00'从第12列转换为TIMESTAMP”

如何将字段的默认值设置为“ 0000-00-00 00:00:00”?

将chr“ 00:00:00”转换为日期时间“ 00:00:00”

如何将具有0000-00-00 00:00:00值的日期时间设置为NULL?

当时间为00:00:00时,如何阻止python将mySQL DATETIME转换为datetime.date?

将posixct时间格式转换为00:00:00

使用PGLoader MySQL将Postgres的NULL和'0000-00-00 00:00:00'转换为非NULL

将时间从'00:00:00.0000'转换为MM:SS mysql

如何将“ 00:30:00”格式转换为秒?

如何将时间设置为始终:00:00:00?

0000-00-00 00:00:00在时间戳

PHP:将时间字符串00:00:00替换为00:00

如何获取时间为00:00:00的系统日期

MySQL导入将时间戳的空值转换为0000-00-00 00:00:00

在R中,如何将数字7.00转换为时间7:00:00?

如何使用php将时间'08:60:02'转换为'09:00:02'?

将下午 1:00:00 转换为 13:00:00

如何使用javascript获取当前时间为00/00/0000 00:00:00

如何将 xts 时间序列转换为 00:00:00 的小时差

C# 如何将本地日期转换为 UTC,时间为 00:00:00 和 23:59:59?

如何将时间“0000-00-00 00:00:00”设置为LocalDateTime?

如何获取今天的日期 + 00:00:00 的时间

如何在python中将像这种格式“2020-01-01 00:00:00+00:00”这样的str转换为日期时间?

将时间转换为 00d 00h 00m

如何在 Pandas (python) 日期列中将 00:00 (HH:MM) 的时间转换为 24:00?

将时间戳转换为没有 00:00:00 的月份

R:将日期/时间格式 0000-00-00T00:00:00Z 转换为 POSIXct