Python 从数据帧中的时间格式数据中删除十进制秒数

Python 从数据帧中的时间格式数据中删除十进制秒数,python,pandas,time,Python,Pandas,Time,我从两个xlsx电子表格中获得了两个大型df,并希望将它们合并到时间戳['time']数据中 问题在于,一个数据集记录的时间为十进制秒,另一个记录的时间为整秒。这意味着两个数据集['Time']键永远不会匹配 df1 Time df2 Time 0 00:07:53.755000 0 00:07:53 1 00:07:54.096000

我从两个xlsx电子表格中获得了两个大型df,并希望将它们合并到时间戳['time']数据中

问题在于,一个数据集记录的时间为十进制秒,另一个记录的时间为整秒。这意味着两个数据集['Time']键永远不会匹配

df1     Time                                 df2     Time
0       00:07:53.755000                      0       00:07:53
1       00:07:54.096000                      1       00:07:54
2       00:07:55.097000                      2       00:07:55
3       00:07:56.099000                      3       00:07:56
4       00:07:57.002000                      4       00:07:57
5       00:07:58.012000                      5       00:07:58
我曾尝试在Excel中修改时间格式,但它始终保留毫秒值,因为它的分数为24小时。我需要从df1中删除十进制秒数(或者只是让它们以某种方式匹配!),以允许与来自df2的行数据进行匹配,我希望在python中有一种更简单的方法来实现这一点


感谢所有的建议

这是一种方法

# convert time to str and remove millisecond
df1['Time'] = df1['Time'].astype(str)
df1['Time'] = df1['Time'].str.replace('\..*','')

# Just to be sure there are no error because of timeformat
df2['Time'] = df2['Time'].astype(str)

# now we can join
df3 = pd.merge(df1, df2, on='Time')

我会使用熊猫
strftime

df1['Time'] = pd.to_datetime(df1['Time']).dt.strftime('%H:%M:%S')
df2['Time'] = pd.to_datetime(df2['Time']).dt.strftime('%H:%M:%S')

merged = pd.merge(df1, df2, on='Time')

df1
中,您只需将微秒设置为0:

df1['Time'] = pd.to_datetime(df1['Time']).apply(lambda x: x.replace(microsecond=0))

然后按正常方式执行合并。

要舍入还是截断?你能根据索引合并吗?最好是截断,但两者都可以。我不能使用索引,因为记录一组时间戳的仪器周期性地跳过一秒或两秒。数据来自与UTC同步并输出GPS位置的两台仪器。我只想使用时间戳来匹配它们在时间x的相对位置。谢谢我尝试了这个,我得到了一个错误:raise AttributeError(“只能使用带有datetimelike的.dt访问器”AttributeError:只能使用带有datetimelike值的.dt访问器看起来好像你没有datetime值。你可以先使用
to_datetime
函数。我会更新我的答案。