【问题标题】:Python: Handling Date/Time with AM/PM informationPython:使用 AM/PM 信息处理日期/时间
【发布时间】:2018-11-21 02:00:14
【问题描述】:

在我的 Excel 数据中,第 1 列的标题为“时间”。它包含如下数据和时间信息:7/26/2018 2:15:00 AM

在我的 python 代码中,我尝试使用 pd.to_datetime 将其转换为日期/时间格式。

这是我的代码。它看起来正确,但它不起作用。

import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt
import datetime


#Basis 
pf=0.9
datatimeinterval_mins = 15

#Pump/fan design specs
des_ampere = 327
des_voltage_kv = 3.3
des_kw = 1600
des_flow_nm3s = 49.9
lowclamp=35

min_flowratio = lowclamp/50

print(min_flowratio)

#Load dataset
    df = pd.read_excel(r'C:\Users\Z003V0EE\Desktop\Python Test\Datasetrev0.xlsx', sheet_name=0, parse_date=[0])
    print(df.head())

    #Set index
    df['Time'] = pd.to_datetime(df['Time'], format='%m/%d/%y %H:%M:%S %p')
    df.set_index('Time', inplace=True)

    #actual operating parameters
    df['actualkw'] = (df.PAF2Current * des_voltage_kv * 0.9 * np.math.sqrt(3))
    df['actualflowratio'] = (df.PAF2AirFlow / des_flow_nm3s)
    df['expectedkw'] = (df.actualflowratio**3 * des_kw)
    df['kwsavings'] = (df.actualkw - df.expectedkw)

    df =  df.round(2)
    print(df.head())

    plt.plot(df.index, df.PAF2AirFlow)

谁能看出我的错误?

我收到以下错误: ValueError:时间数据 '7/26/2018 2:15:00 AM' 与格式 '%m/%d/%y %H:%M:%S %p' 不匹配(匹配)

提前致谢。

【问题讨论】:

  • 欢迎来到 SO!您能否向我们展示更多您正在使用的代码和预期的输出/结果?
  • 我正在尝试根据日期/时间绘制一些参数。但日期/时间尚未被识别为日期/时间格式。
  • 我已经用我的更多代码更新了我的帖子。我收到以下错误:
  • ValueError: 时间数据 '7/26/2018 2:15:00 AM' 与格式 '%m/%d/%y %H:%M:%S %p' 不匹配(匹配)
  • 请将此错误放在问题中,它在 cmets 中没有服务

标签: python datetime


【解决方案1】:

将格式更改为 '%m/%d/%Y %I:%M:%S %p' 适合我。注意大写的 Y。

related docs 中,%y 表示两位数的年份,而%Y 表示四位数的年份。

此外,您应该使用%I 而不是%H,因为前者是 12 小时制,后者是 24 小时制。

【讨论】:

  • ValueError: 时间数据 datetime.datetime(2018, 1, 8, 0, 0) 与格式 '%m/%d/%Y %I:%M:%S %p' 不匹配(匹配)
  • @Ombre 当你已经有一个日期时间对象时,你为什么要转换为日期时间
  • 我正在尝试将“日期时间”列设置为索引。然后根据索引绘制一些参数。如果我不转换为日期时间,那么我的绘图代码行会出现以下错误。 "43108 不是字符串"
  • @Ombre 从你的错误信息中,你已经得到了日期时间对象,所以你不能 to_datetime() 一个日期时间,也许首先尝试识别你的 datetime 列中的内容?
  • 好的,非常感谢@kevin Fang。让我弄清楚。
【解决方案2】:

我会使用dateutil.parser 将字符串转换为日期时间。它非常流畅,如果您的电子表格更改了时间格式,它将避免任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2021-02-17
    • 1970-01-01
    • 2022-01-19
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多