2024-10-01 11:20:46 发布
网友
我的数据帧看起来像:
Time,User,value 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列中的字符串时间戳更改为epoch(毫秒)。我可以通过在列表列表中保存值并遍历每一行来做到这一点。但我需要一种有效的方法,这样我就可以将数据帧本身的字符串时间替换为epoch时间。提前谢谢。在
Time
我不知道‘epoch’对您来说是什么,但是一般来说pandas.apply函数就是您想要的。它的工作原理与map在python内置函数中的作用类似。(假设timestamp.epoch返回时间戳的epoch)
pandas.apply
map
timestamp.epoch
import datetime as dt def helper(val): time = dt.datetime.strptime(dtstring, '%Y-%m-%d %H:%M:%S.%f') return dt.epoch() df['Time'] = df['Time'].apply(helper)
我认为需要转换^{},然后转换为numpy array,并转换为int64,最后除以10**6,因为本机格式是nanoseconds:
numpy array
int64
10**6
nanosecond
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
df['Time'] = (df['Time'] - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')
是熊猫推荐的解决方案,reference。在
示例:
输出:
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
我不知道‘epoch’对您来说是什么,但是一般来说
pandas.apply
函数就是您想要的。它的工作原理与map
在python内置函数中的作用类似。(假设timestamp.epoch
返回时间戳的epoch)我认为需要转换^{} ,然后转换为
numpy array
,并转换为int64
,最后除以10**6
,因为本机格式是nanosecond
s:是熊猫推荐的解决方案,reference。在
示例:
^{pr2}$输出:
相关问题 更多 >
编程相关推荐