Python 仅在datetime.date中选择月份和日期

Python 仅在datetime.date中选择月份和日期,python,datetime,Python,Datetime,我正在处理数据集。我已将崩溃日期和崩溃时间列合并为一列,格式为2017-06-26 22:00:00。我现在想添加一个基于的分类列。为了做到这一点,我希望对每个季节名称应用一个遮罩,并使用以下基本结构在此基础上填充列: df[df['CRASH TIME'].dt.date < dt.date(:,1,2)] 问题是datetime时间戳需要输入年份;该数据集跨越若干年。我想选择所有年份,而不是任何给定年份。换句话说,我只想选择月份和日期,而不是年份。有没有一种方法可以使用datetim

我正在处理数据集。我已将崩溃日期和崩溃时间列合并为一列,格式为2017-06-26 22:00:00。我现在想添加一个基于的分类列。为了做到这一点,我希望对每个季节名称应用一个遮罩,并使用以下基本结构在此基础上填充列:

df[df['CRASH TIME'].dt.date < dt.date(:,1,2)]

问题是datetime时间戳需要输入年份;该数据集跨越若干年。我想选择所有年份,而不是任何给定年份。换句话说,我只想选择月份和日期,而不是年份。有没有一种方法可以使用datetime时间戳来实现这一点?

我不确定有没有一种方法可以直接比较日期的一部分,但您可以将月份和日期提取到元组中,并以这种方式进行比较:

month_day_left = (df['CRASH TIME'].dt.date.month, df['CRASH TIME'].dt.date.day)
month_day_right = (dt.date.month, dt.date.day)

(2, 1) < (2, 2) # True
(1, 10) < (2, 1) # True
(2, 1) < (1, 30) # False
df[ is_earlier(df['CRASH TIME'].dt, dt)]

我不确定是否有一种方法可以直接比较日期的一部分,但您可以将月份和日期提取到元组中,并以这种方式进行比较:

month_day_left = (df['CRASH TIME'].dt.date.month, df['CRASH TIME'].dt.date.day)
month_day_right = (dt.date.month, dt.date.day)

(2, 1) < (2, 2) # True
(1, 10) < (2, 1) # True
(2, 1) < (1, 30) # False
df[ is_earlier(df['CRASH TIME'].dt, dt)]

假设您使用pandas来处理数据,您可以这样做

df['day'] = df['CRASH TIME'].apply(lambda r:r.day)
df['month'] = df['CRASH TIME'].apply(lambda r:r.month)

然后,您可以将它们组合在一起或按原样使用它们。

假设您使用pandas来处理数据,您可以这样做

df['day'] = df['CRASH TIME'].apply(lambda r:r.day)
df['month'] = df['CRASH TIME'].apply(lambda r:r.month)
然后,您可以将它们组合在一起或按原样使用它们