Python 3.x 如何使用python为同一列中包含的相同值设置00:00:00的时间

Python 3.x 如何使用python为同一列中包含的相同值设置00:00:00的时间,python-3.x,pandas,time,Python 3.x,Pandas,Time,这里我有一个数据集,其中有一个带有时间和日期的输入。在这里,我想将同一列中相同值中包含的时间转换为00:00:00 在这里我写了代码,它只是给了我每天的开始时间相同的值。如果我在一天内有两个相同的值,它不会将时间显示为00:00:00。它只是在显示它的价值 df['time_diff']= pd.to_datetime(df['date'] + " " + df['time'], format='%d/%m/%Y %H:%M:%S', dayfir

这里我有一个数据集,其中有一个带有时间和日期的输入。在这里,我想将同一列中相同值中包含的时间转换为00:00:00

在这里我写了代码,它只是给了我每天的开始时间相同的值。如果我在一天内有两个相同的值,它不会将时间显示为00:00:00。它只是在显示它的价值

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'] = (df[mask].drop_duplicates(['date','x3'])
                      .groupby(['date','x3'])['time_diff']
                      .transform('first'))
df['Duration'] = df['time_diff'].sub(df['Duration']).dt.total_seconds().div(3600)
输出应如下所示:

日期时间x3持续时间
2018年10月3日6:15:00南
10/3/2018	6:45:00	        5	00:00:00
2018年10月3日7:45:00南
2018年3月10日9:00:00南
2018年10月3日9:25:00南
2018年10月3日9:30:00南
2018年10月3日11:00:00南
2018年10月3日11:30:00南
2018年10月3日13:30:00南
2018年10月3日13:50:00 5南
2018年3月10日15:00:00南
2018年10月3日15:25:00南
2018年10月3日16:25:00南
2018年3月10日18:00:00南
2018年10月3日19:00:00南
2018年10月3日19:30:00南
2018年10月3日20:00:00南
2018年10月3日22:05:00南
2018年10月3日22:15:00 5南
2018年10月3日23:40:00南
10/4/2018	6:58:00	        5	00:00:00
2018年4月10日13:00:00南
2018年4月10日16:00:00南

2018年4月10日17:00:00 NaN
IIUC,这应该有效

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)

@是的,我之前试过,它给了我相同值之间的差异。“0.0,7.05小时”是因为时间不同。如果删除最后一行'df['Duration']=df['time_diff'].sub(df['Duration']).dt.total_seconds().div(3600)`。这可能有用。没有原始数据,很难复制问题。不,它不起作用。在这里我发布了我的csv文件。你可以看看我的原始数据。@SH-SF是的,现在它工作了。非常感谢你的回答