Python Datetime不保留12小时格式

Python Datetime不保留12小时格式,python,pandas,datetime,Python,Pandas,Datetime,为了理解如何将以24小时格式存储的变量转换为12小时格式,我遵循了类似的思路。问题是,一旦我尝试在数据集中包含格式化变量(现在被视为字符串),24小时格式就会再次出现。谁能解释一下我能做什么?下面您可以看到我采取的步骤: data["arrival_time"] = data["arrival_time"].astype('str') arr = [] for i in data["arrival_time"]: if i != &

为了理解如何将以24小时格式存储的变量转换为12小时格式,我遵循了类似的思路。问题是,一旦我尝试在数据集中包含格式化变量(现在被视为字符串),24小时格式就会再次出现。谁能解释一下我能做什么?下面您可以看到我采取的步骤:

data["arrival_time"] = data["arrival_time"].astype('str')
arr = []
for i in data["arrival_time"]:
  if i != "nan":
    a = datetime.datetime.strptime(i,"%H:%M:%S")
    b = a.strftime("%I:%M %p")
    arr.append(b)
  else:
    arr.append(i)

data["departure_time"] = data["departure_time"].astype('str')
dep = []
for i in data["departure_time"]:
  if i != "nan":
    c = datetime.datetime.strptime(i,"%H:%M:%S")
    d = c.strftime("%I:%M %p")
    dep.append(d)
  else:
    dep.append(i)

data["formatted_arrival_time"] = arr
data["formatted_departure_time"] = dep

data["formatted_arrival_time"] = pd.to_datetime(data["formatted_arrival_time"], format = "%I:%M %p", errors = "ignore").dt.time
data["formatted_arrival_time"]
结果如下:


to_datetime使用该格式解析数据,而不是存储数据。这只是时间的默认表示形式。如果要将其显示为12小时时间,则需要将其存储为pd.to_datetime()之前的字符串,或者在需要显示数据时将其转换。

to_datetime使用该格式解析数据,而不是存储数据。这只是时间的默认表示形式。如果要将其显示为12小时时间,则需要将其存储为pd.to_datetime()之前的字符串,或在需要显示数据时将其转换。

12小时或24小时显示是一种格式选项,适用于供人使用的日期。您无法影响
datetime
的存储方式,因此,如果只输出
datetime
而不指定显示格式,则只需获得默认表示形式。对于供人使用的日期,12小时或24小时显示是一种格式选项。您无法影响
datetime
的存储方式,因此,如果您只输出
datetime
而不指定显示格式,您将只获得默认表示形式。但是如果我必须执行一些操作,例如获取格式化的出发时间和到达时间之间的差异,如果不先更改为datetime,我如何才能做到这一点?因为对我来说,我能够区分“am”或“PM”是很基本的,否则时间上的差异会是负的。确切地说,时间格式更好。时间格式之间的减法运算将返回一个timedelta对象。差异(在大多数情况下)不会是负的。15:00-10:00=+5小时。有了24小时的学习时间,数学就容易多了。例外是过夜航班,这就是为什么你应该使用一个日期也将考虑一天。您仍然可以使用条件time.hour<12来确定AM/PM。但是如果我必须执行一些操作,例如获取格式化的出发时间和到达时间之间的差值,我如何在不首先更改为datetime的情况下执行这些操作?因为对我来说,我能够区分“am”或“PM”是很基本的,否则时间上的差异会是负的。确切地说,时间格式更好。时间格式之间的减法运算将返回一个timedelta对象。差异(在大多数情况下)不会是负的。15:00-10:00=+5小时。有了24小时的学习时间,数学就容易多了。例外是过夜航班,这就是为什么你应该使用一个日期也将考虑一天。您仍然可以使用条件time.hour<12来确定AM/PM。