熊猫时间戳记为datetime.datetime()

时间:2019-01-14 01:27:34

标签: python pandas datetime

我有一个带有Timestamp列的数据框。我想将其转换为datetime.datetime格式。这是我尝试过的:

import pandas as pd

ts = pd.Timestamp('2019-01-01 00:00:00', tz=None)
df = pd.DataFrame({"myDate": [ts]})

df["myDate"] = df["myDate"].dt.to_pydatetime()
myList = df["myDate"].dt.to_pydatetime()

print(df.dtypes)
print(type(myList[0]))

第一个print()返回一个时间戳(意外) 第二个print()返回日期时间(预期) 如何使此数据帧重新分配保持不变?

*编辑:我要实现的目标* 要将数据帧中的时间戳与列表中的日期时间进行比较,如下所示:

ts = pd.Timestamp('2019-01-01 00:00:00', tz=None)
df = pd.DataFrame({"my_date": [ts]})
df_set = set(df["my_date"].values)
dt_set = set([datetime(2019, 1, 1, 0, 0, 0)])
print(dt_set - df_set)

返回:{datetime.datetime(2019,1,1,0,0)}。应该为空集。

1 个答案:

答案 0 :(得分:2)

您可以使用pd.DatetimeIndex及其difference方法。通常,对熊猫/ NumPy对象使用set效率不高。相关:Pandas pd.Series.isin performance with set versus array

from datetime import datetime

df = pd.DataFrame({"my_date": [pd.Timestamp('2019-01-01 00:00:00', tz=None),
                               pd.Timestamp('2019-01-10 00:00:00', tz=None)]})

datetime_list = [datetime(2019, 1, 1, 0, 0, 0)]

diff = pd.DatetimeIndex(df['my_date']).difference(pd.DatetimeIndex(datetime_list))

# DatetimeIndex(['2019-01-10'], dtype='datetime64[ns]', freq=None)
相关问题