Python 从数据帧中的时间格式数据中删除十进制秒数
我从两个xlsx电子表格中获得了两个大型df,并希望将它们合并到时间戳['time']数据中 问题在于,一个数据集记录的时间为十进制秒,另一个记录的时间为整秒。这意味着两个数据集['Time']键永远不会匹配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
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
函数。我会更新我的答案。