python 中的 Unix 时间转换
Unix time conversion in python
我有一个我需要分析的机器数据集,但是在解析来自线路控制器 PC 的 excel 文件时,日期信息(开始时格式类似于“10/09/2020”)结束了正如我假设的那样,这是一个 unix 时间戳,比我见过的要长,或者可以在 SO 上找到一个例子(例如 1599696000000000000)。
我为隐藏它所做的努力都失败了。我正在做一个 python coursera 程序,讲师确实说这是一个困难的命题,因为没有标准方法,而且 none 我试过的方法有效
无论如何,excel 文件看起来像这样
Datum WKZ_code Time Rad_t1 Not Important Cut_Event
1599696000000000000 W03 00:00:00 100 250 /
1599696000000000000 W03 00:00:01 100 250 /
1599696000000000000 W03 00:00:02 100 250 /
1599696000000000000 W03 00:00:03 100 250 /
1599696000000000000 W03 00:00:04 100 250 /
1599696000000000000 W03 00:00:00 100 250 Speed Cut
我需要能够将基准列恢复为“DD/MM/YYYY”格式,否则我的切割数据图会失败,因为 python 似乎无法确定将它们放在何处y 轴。
我尝试过的最简洁的解决方案是
pd.Timestamp.combine(pd.Timestamp.utcfromtimestamp(df['DATUM'][0]/1E9), pd.to_datetime(df['Time'][0]))
但这产生了错误
TypeError Traceback (most recent call last)
<ipython-input-102-b9d1b1186db5> in <module>
----> 1 pd.Timestamp.combine(pd.Timestamp.utcfromtimestamp(df['DATUM'][0]/1E9), pd.to_datetime(df['Time'][0]))
pandas\_libs\tslibs\timestamps.pyx in pandas._libs.tslibs.timestamps.Timestamp.combine()
TypeError: combine() argument 2 must be datetime.time, not Timestamp
另一个部门的 python 开发人员建议:
df = pd.read_excel("tool W03 with cuts and dates.xlsx",
dtype=object)
df = df[['DATUM']]
df = df['DATUM']=(pd.to_datetime(df['DATUM'],unit='s'))
df.head()
这也引发了有关单位的错误,但我一直无法想出解决办法
pandas\_libs\tslib.pyx in pandas._libs.tslib.array_with_unit_to_datetime()
OutOfBoundsDatetime: cannot convert input 1599696000000000000 with the unit 's
如果有人能提供解决方案,我将非常非常感激。我已经尽力按照约定提出这个问题,如有错误请提前致歉。
使用to_datetime
with default unit='ns'
and convert times to timedeltas by to_timedelta
:
df['Datum'] = pd.to_datetime(df['Datum']) + pd.to_timedelta(df['Time'])
print (df)
Datum WKZ_code Time Rad_t1 Not Important Cut_Event
0 2020-09-10 00:00:00 W03 00:00:00 100 250 /
1 2020-09-10 00:00:01 W03 00:00:01 100 250 /
2 2020-09-10 00:00:02 W03 00:00:02 100 250 /
3 2020-09-10 00:00:03 W03 00:00:03 100 250 /
4 2020-09-10 00:00:04 W03 00:00:04 100 250 /
5 2020-09-10 00:00:00 W03 00:00:00 100 250 Speed Cut
我有一个我需要分析的机器数据集,但是在解析来自线路控制器 PC 的 excel 文件时,日期信息(开始时格式类似于“10/09/2020”)结束了正如我假设的那样,这是一个 unix 时间戳,比我见过的要长,或者可以在 SO 上找到一个例子(例如 1599696000000000000)。
我为隐藏它所做的努力都失败了。我正在做一个 python coursera 程序,讲师确实说这是一个困难的命题,因为没有标准方法,而且 none 我试过的方法有效
无论如何,excel 文件看起来像这样
Datum WKZ_code Time Rad_t1 Not Important Cut_Event
1599696000000000000 W03 00:00:00 100 250 /
1599696000000000000 W03 00:00:01 100 250 /
1599696000000000000 W03 00:00:02 100 250 /
1599696000000000000 W03 00:00:03 100 250 /
1599696000000000000 W03 00:00:04 100 250 /
1599696000000000000 W03 00:00:00 100 250 Speed Cut
我需要能够将基准列恢复为“DD/MM/YYYY”格式,否则我的切割数据图会失败,因为 python 似乎无法确定将它们放在何处y 轴。
我尝试过的最简洁的解决方案是
pd.Timestamp.combine(pd.Timestamp.utcfromtimestamp(df['DATUM'][0]/1E9), pd.to_datetime(df['Time'][0]))
但这产生了错误
TypeError Traceback (most recent call last)
<ipython-input-102-b9d1b1186db5> in <module>
----> 1 pd.Timestamp.combine(pd.Timestamp.utcfromtimestamp(df['DATUM'][0]/1E9), pd.to_datetime(df['Time'][0]))
pandas\_libs\tslibs\timestamps.pyx in pandas._libs.tslibs.timestamps.Timestamp.combine()
TypeError: combine() argument 2 must be datetime.time, not Timestamp
另一个部门的 python 开发人员建议:
df = pd.read_excel("tool W03 with cuts and dates.xlsx",
dtype=object)
df = df[['DATUM']]
df = df['DATUM']=(pd.to_datetime(df['DATUM'],unit='s'))
df.head()
这也引发了有关单位的错误,但我一直无法想出解决办法
pandas\_libs\tslib.pyx in pandas._libs.tslib.array_with_unit_to_datetime()
OutOfBoundsDatetime: cannot convert input 1599696000000000000 with the unit 's
如果有人能提供解决方案,我将非常非常感激。我已经尽力按照约定提出这个问题,如有错误请提前致歉。
使用to_datetime
with default unit='ns'
and convert times to timedeltas by to_timedelta
:
df['Datum'] = pd.to_datetime(df['Datum']) + pd.to_timedelta(df['Time'])
print (df)
Datum WKZ_code Time Rad_t1 Not Important Cut_Event
0 2020-09-10 00:00:00 W03 00:00:00 100 250 /
1 2020-09-10 00:00:01 W03 00:00:01 100 250 /
2 2020-09-10 00:00:02 W03 00:00:02 100 250 /
3 2020-09-10 00:00:03 W03 00:00:03 100 250 /
4 2020-09-10 00:00:04 W03 00:00:04 100 250 /
5 2020-09-10 00:00:00 W03 00:00:00 100 250 Speed Cut