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