在Python解析包含纳秒的 DateTime字符串
大多数应用程序需要高达秒的精度,但也有一些关键应用程序需要纳秒精度,尤其是那些可以执行极快计算的应用程序。它可以帮助提供有关与应用程序时间空间相关的某些因素的见解。让我们看看如何解析包含纳秒的 DateTime字符串。 Python有一个指令列表,可用于将字符串解析为日期时间对象。让我们看看其中一些我们将在我们的代码中使用的。Directive Description Example %Y Year 2021 %m Month Number 7 %d Date of the month 5 %H 24 Hour format 16 %M Minute 51 %f Microsecond 234567
DateTime 对象的图像演示:
让我们以默认的Python时间戳格式:“2021-08-05 15:25:56.792554”为例进行处理。
方法一:使用DateTime模块
在此示例中,我们将看到纳秒值为792554 。 “ %f ”指令用于解析纳秒。通过使用strftime()方法将“ %f ”指令转换为其日期时间对象表示的字符串值,可以交叉验证同样的事情。
Python
from datetime import datetime
# Parse the default python timestamp format
dt_obj = datetime.strptime("2021-08-05 15:25:56.792554",
"%Y-%m-%d %H:%M:%S.%f")
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
# Print the value of nano seconds
print(nano_secs)
Python
import pandas as pd
# Parse the timestamp string by
# providing the format of timestamp string
dt_obj = pd.to_datetime("2021-08-05 15:25:56.792554",
format="%Y-%m-%d %H:%M:%S.%f")
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
# Print the value of nano seconds
print(nano_secs)
Python
import pandas as pd
# Parse the timestamp string by
# providing infer_datetime_format as True
dt_obj = pd.to_datetime("2021-08-05 15:25:56.792554",
infer_datetime_format=True)
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
# Print the value of nano seconds
print(nano_secs)
输出
792554
方法二:使用 Pandas 库
这里我们将使用 pandas.to_datetime() 方法来解析包含纳秒的 DateTime字符串。
Syntax:
pandas.to_datetime(arg, errors=’raise’, dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin=’unix’, cache=False)
Parameters:
arg: An integer, string, float, list or dict object to convert in to Date time object.
dayfirst: Boolean value, places day first if True.
yearfirst: Boolean value, places year first if True.
utc: Boolean value, Returns time in UTC if True.
format: String input to tell position of day, month and year.
Python
import pandas as pd
# Parse the timestamp string by
# providing the format of timestamp string
dt_obj = pd.to_datetime("2021-08-05 15:25:56.792554",
format="%Y-%m-%d %H:%M:%S.%f")
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
# Print the value of nano seconds
print(nano_secs)
输出:
792554
上面的示例与前面的示例类似,不同之处在于我们使用了pandas库而不是datetime模块。当我们使用pandas 数据框时,这可以证明是很方便的。这个库的一个优点是我们可能不需要手动提供格式。如果提供为True , pandas.to_datetime()方法中的参数infer_datetime_format可以自动处理。在某些情况下,它可以将解析速度提高 ~5-10x 。下面是一个相同的例子。
Python
import pandas as pd
# Parse the timestamp string by
# providing infer_datetime_format as True
dt_obj = pd.to_datetime("2021-08-05 15:25:56.792554",
infer_datetime_format=True)
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
# Print the value of nano seconds
print(nano_secs)
输出:
792554