首先,您应该从datetime 系列开始;如果您没有,请使用pd.to_datetime 强制进行此转换。这将允许矢量化计算:
df = pd.DataFrame({'col': ['2014-07-30 12:19:22', '2014-07-30 05:52:05',
'2014-07-30 20:15:00']})
df['col'] = pd.to_datetime(df['col'])
接下来,请注意您无法从 Pandas 中的 datetime 系列中删除时间。根据定义,datetime 系列将包括“日期”和“时间”组件。
标准化时间
您可以使用pd.Series.dt.floor 或pd.Series.dt.normalize 将时间组件重置为00:00:00:
df['col_floored'] = df['col'].dt.floor('d')
df['col_normalized'] = df['col'].dt.normalize()
print(df['col_floored'].iloc[0]) # 2014-07-30 00:00:00
print(df['col_normalized'].iloc[0]) # 2014-07-30 00:00:00
转换为 datetime.date 指针
您可以将您的 datetime 系列转换为 object 系列,由代表日期的 datetime.date 对象组成:
df['col_date'] = df['col'].dt.date
print(df['col_date'].iloc[0]) # 2014-07-30
由于这些不保存在连续的内存块中,df['col_date'] 上的操作将不会被矢量化。
如何检查差异
检查dtype 对我们派生的系列很有用。请注意“删除”时间的一个选项涉及将您的系列转换为object。
计算将不使用此类序列进行向量化,因为它由指向 datetime.date 对象的指针组成,而不是连续内存块中的数据。
print(df.dtypes)
col datetime64[ns]
col_date object
col_floored datetime64[ns]
col_normalized datetime64[ns]