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