您好我有一个UTC格式的数字数组。格式为HH.MM.SS.MS,即小时分秒和毫秒。我想将整个数字转换为毫秒。所以我提取前两位数字如下
hh=int(str(x[1])[:2]) # returns 42 where hours and minutes mixed
# My data also start with non zero for example x=142826.00
# doing the same operation like above returns 14( It is perfect). So intention is when 04 extract only 4 and if it is 14 extract 14.
042826.00
042826.25
042826.50
042826.75
042827.00
042827.25
042827.50
042827.75
042828.00
042828.25
042828.50
042828.75
042829.00
042829.25
042829.50
042829.75
042830.00
042830.25
042830.50
042830.75
如何提取并转换为毫秒。
答案 0 :(得分:2)
我会省去很多麻烦,并使用'ms'
已经提供的漂亮的格式化选项。由于前导零,您的列显然是一个字符串。从那里开始,您可以很容易地在任何单位获得时间,在这种情况下'%H%M%S.%f'
字符串的格式为datetime
。我们会将此转换为1900-01-01
对象,为您提供开始日期np.timedelta64
。我们只需将其减去然后将单位转换为ms import pandas as pd
import numpy as np
df
number
0 042826.00
1 042826.25
2 042826.50
3 042826.75
4 042827.00
5 042827.25
6 042827.50
7 042827.75
(pd.to_datetime(df.number, format='%H%M%S.%f')
-pd.to_datetime('1900-01-01'))/np.timedelta64(1, 'ms')
#0 16106000.0
#1 16106250.0
#2 16106500.0
#3 16106750.0
#4 16107000.0
#5 16107250.0
#6 16107500.0
#7 16107750.0
#Name: number, dtype: float64
1900-01-01
的默认行为,日期if-else
最有可能被用作默认值
当无法推断出更准确的值时,用于填充任何缺失数据的默认值为(1900,1,1,0,0,0,0,1,-1)。字符串和格式都必须是字符串。
答案 1 :(得分:1)
您可能不希望在str
和int
中来回更改它们。
首先使用Decimal/float
获取毫秒,然后使用int
转换其余部分:
numbers = {your array}
milisecond = 0
for number in numbers:
number = Decimal(number, '.3f')
millisecond += (number * 1000) % 1000
number = int(number)
millisecond += (number % 100) * 1000
number /= 100
millisecond += (number % 100) * 60 * 1000
number /= 100
millisecond += number * 60 * 60 * 1000
millisecond
是从数字