📜  在Python解析包含纳秒的 DateTime字符串

📅  最后修改于: 2022-05-13 01:54:52.094000             🧑  作者: Mango

在Python解析包含纳秒的 DateTime字符串

大多数应用程序需要高达秒的精度,但也有一些关键应用程序需要纳秒精度,尤其是那些可以执行极快计算的应用程序。它可以帮助提供有关与应用程序时间空间相关的某些因素的见解。让我们看看如何解析包含纳秒的 DateTime字符串。 Python有一个指令列表,可用于将字符串解析为日期时间对象。让我们看看其中一些我们将在我们的代码中使用的。

DirectiveDescriptionExample
%YYear2021
%mMonth Number7
%dDate of the month5
%H24 Hour format16
%MMinute51
%fMicrosecond234567

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字符串。



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 数据框时,这可以证明是很方便的。这个库的一个优点是我们可能不需要手动提供格式。如果提供为Truepandas.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