pandas convert from datetime to integer timestamp
考虑到python中的pandas数据帧有一个名为time的整数类型的列,我可以使用以下指令将其转换为datetime格式。
1
| df['time'] = pandas.to_datetime(df['time'], unit='s') |
所以现在该列的条目如下:2019-01-15 13:25:43。
将字符串恢复为整数时间戳值(表示从1970-01-01 00:00:00开始经过的秒数)的命令是什么?
我检查了pandas.Timestamp但找不到转换实用程序,我无法使用pandas.to_timedelta。
这次转换有用吗?
-
这应该有助于stackoverflow.com/q/4548684/9754169
在timedelta64上使用.dt.total_seconds():
1 2 3 4 5 6
| import pandas as pd
df = pd.DataFrame({'time': [pd.to_datetime('2019-01-15 13:25:43')]})
pd.to_timedelta(df.time).dt.total_seconds()
# or
(df.time - pd.to_datetime('1970-01-01')).dt.total_seconds() |
产量
1 2
| 0 1.547559e+09
Name: time, dtype: float64 |
您可以使用astype(int)对int进行类型转换并将其除以10**9以获取unix时期开始的秒数。
1 2 3 4
| import pandas as pd
df = pd.DataFrame({'time': [pd.to_datetime('2019-01-15 13:25:43')]})
df_unix_sec = pd.to_datetime(df['time']).astype(int)/ 10**9
print(df_unix_sec) |
-
这将是太棒了,但它没有给出预期的结果:我尝试了以下几行:df = pd.DataFrame({'time': [pd.to_datetime('2019-01-15 13:25:43')]}) df['time'] = pandas.to_datetime(df['time'], unit='s',origin='unix')它没有返回任何错误,但我看不到列中的任何更改
-
Psst,转换为int是我的答案;-)
-
@FrancescoBoi实际上最初我误解了to_datetime参数。 看看我在这里问了一个关于SO的问题stackoverflow.com/questions/54313463/…。 所以,如果你把它转换为int那么它将适合你:)
-
@coldspeed是的先生,我已经在我之前的评论中提到了这一点。 所以df_unix_sec = pd.to_datetime(df['time']).astype(int)将在这里工作
-
对不起,我的意思也是我对这个问题的回答。
-
好吧,如果你可以添加你需要除以10 ** 9来得到一个nix时间戳,我只会删除我的答案。
-
是的先生@coldspeed解决了这个问题
-
由于我在除以10**9之后获得了一个浮动类型,因此我最好添加另一个角色:res = (pd.to_datetime(df['time'], unit='s').astype(int)/10**9).astype(int)
-
@FrancescoBoi是同意。:)