Python 将字符串datetime替换为数据帧中的历元

Python 将字符串datetime替换为数据帧中的历元,python,pandas,python-datetime,Python,Pandas,Python Datetime,我的数据框看起来像: 时间、用户、值 2018-03-30T14:18:49.600,U101,23 2018-03-30T14:18:49.800,U102,22 2018-03-30T14:18:50.000,U101,24 我想在DataFrame的Time列中将字符串timestamp更改为以毫秒为单位的历元。我可以通过在列表列表中保存值并遍历每一行来实现这一点。但我需要一种有效的方法,这样,我就可以在数据帧本身中替换字符串时间到历元时间。提前谢谢。我不知道什么是“纪元”,但一般来说,p

我的数据框看起来像:

时间、用户、值
2018-03-30T14:18:49.600,U101,23
2018-03-30T14:18:49.800,U102,22
2018-03-30T14:18:50.000,U101,24


我想在DataFrame的
Time
列中将字符串timestamp更改为以毫秒为单位的历元。我可以通过在列表列表中保存值并遍历每一行来实现这一点。但我需要一种有效的方法,这样,我就可以在数据帧本身中替换字符串时间到历元时间。提前谢谢。

我不知道什么是“纪元”,但一般来说,
pandas.apply
功能就是您想要的。它的工作原理与python内置函数中的
map
类似。(假设
timestamp.epoch
返回时间戳的历元)

我认为需要转换为
numpy数组
,并转换为
int64
,最后除以
10**6
,因为本机格式为
纳秒
s:

df['Time'] = pd.to_datetime(df['Time']).values.astype(np.int64) // 10**6
print (df)
            Time  User  value
0  1522419529600  U101     23
1  1522419529800  U102     22
2  1522419530000  U101     24
是熊猫公司推荐的解决方案

例如:

import pandas as pd
df = pd.DataFrame()
df['Time'] = pd.date_range('2012-10-08 18:15:05', periods=4, freq='D')
df['Epoch'] = (df['Time'] - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')
print(df)
输出:

                 Time       Epoch
0 2012-10-08 18:15:05  1349720105
1 2012-10-09 18:15:05  1349806505
2 2012-10-10 18:15:05  1349892905
3 2012-10-11 18:15:05  1349979305
import pandas as pd
df = pd.DataFrame()
df['Time'] = pd.date_range('2012-10-08 18:15:05', periods=4, freq='D')
df['Epoch'] = (df['Time'] - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')
print(df)
                 Time       Epoch
0 2012-10-08 18:15:05  1349720105
1 2012-10-09 18:15:05  1349806505
2 2012-10-10 18:15:05  1349892905
3 2012-10-11 18:15:05  1349979305