【发布时间】:2021-09-19 16:51:26
【问题描述】:
如何将datetimes 包含在pd.DataFrame 中?
import pandas as pd
from datetime import datetime
df = pd.DataFrame({"a": ['2002-02-02', '2002-02-03', '2002-02-04']})
df["b"] = df["a"].apply(lambda t: datetime.strptime(t, '%Y-%m-%d')) # datetime.strptime returns datetime.datetime
print(datetime(2002, 2, 2) in df["b"])
输出False。
同样,
f["c"] = df["b"].apply(lambda t: t.to_pydatetime())
print(datetime(2002, 2, 2) in df["c"])
输出False。
请注意,this 和 this 都不起作用。按照这些方法中的任何一种,我最终都会在数据框中得到Timestamps 而不是datetimes。
我正在使用 Python 3.8.5 和 Pandas 1.2.1。
【问题讨论】:
-
datetime(2002, 2, 2) in list(df['b'])? -
@Epsi95 是的。但是,这意味着我每次都必须转换它。
-
@Epsi95 但是
datetime(2002, 2, 2) in list(pd.to_datetime(df['b']).unique())又是False。 -
datetime(2002, 2, 2) in list(pd.to_datetime(pd.to_datetime(df['b']).unique())) -
问题的标题让我很困惑;在
pandas中,您需要使用内置数据类型(numpy中的 datetime64)。请注意,pandas 会自动将 Python 标准库日期时间转换为其内置数据类型。只有当你有一个 datetime.date 或 datetime.time 类型的 pd.Series 时,该类型才不会被修改。
标签: python pandas datetime type-conversion