如何解决熊猫时间戳到datetime.date
我在将pandas系列转换为datetime.datetime时遇到问题。
我得到了DataFrame-df,其列类型为pandas._libs.tslibs.timestamps.Timestamp
的列 Timestamp 和列类型为pandas._libs.tslibs.timedeltas.Timedelta
的列 Timestamp-end
我在SO上找到了该主题:Converting pandas.tslib.Timestamp to datetime python,但是关于该主题的建议没有用。
是否有可能将其转换为日期时间?如果没有,如何从类型的时间戳列中减去时间戳结束,以将日期和时间转换为时间戳和Timedelta类型?
我如何创建时间戳列:
import adodbapi
import pandas as pd
import numpy as np
import datetime as dt
cursor = myConn.cursor()
cursor.execute(query)
# every row in query_list is type of SQLrow
query_list = [row for row in cursor]
df = pd.DataFrame({'TagAddress':[row[0] for row in query_list],'Timestamp':[row[1] for row in query_list],'Value':[row[3] for row in query_list]})
时间戳记结束列:
df['Timestamp-end'] = pd.NaT
# in for loop,dict values are type of timestamps.Timestamp
df['Timestamp-end'].iloc[i] = df['Timestamp'].iloc[i] - current_errors_timestamp[curr_fault_key]
我的预期输出(列结果):
我只想从Timedelta
中减去Timestamp
以得到新列Timestamp
。使用datetime.datetime
类型,我可以毫无问题地做到这一点。
Timestamp ErrorValue Machine Station FAULT Timestamp-end Result
2020-06-20 08:01:09.562 370 T1 R1 1 0 days 00:00:06 2020-06-20 08:01:03
2020-06-20 08:01:21.881 370 T1 R1 0 0 days 00:00:12.319000 2020-06-20 08:01:09
2020-06-20 08:07:06.708 338 T1 R1 0 0 days 00:00:24.623000 2020-06-20 08:06:42
2020-06-20 08:07:31.041 338 T1 R1 0 0 days 00:00:18.333000 2020-06-20 08:07:13
解决方法
我相信您需要将列转换为日期:
df['Timestamp1'] = df['Timestamp'].dt.date
否则应该将清除时间设为00:00:00
:
df['Timestamp1'] = df['Timestamp'].dt.normalize()
然后减去。
编辑:您可以减去值,然后使用Series.dt.floor
几秒钟:
df['Timestamp-end'] = pd.to_timedelta(df['Timestamp-end'])
df['Result'] = df['Timestamp'].sub(df['Timestamp-end']).dt.floor('S')
print (df)
Timestamp ErrorValue Machine Station FAULT Timestamp-end \
0 2020-06-20 08:01:09.562 370 T1 R1 1 00:00:06
1 2020-06-20 08:01:21.881 370 T1 R1 0 00:00:12.319000
2 2020-06-20 08:07:06.708 338 T1 R1 0 00:00:24.623000
3 2020-06-20 08:07:31.041 338 T1 R1 0 00:00:18.333000
Result
0 2020-06-20 08:01:03
1 2020-06-20 08:01:09
2 2020-06-20 08:06:42
3 2020-06-20 08:07:12
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。