Python 评估两个条件
我有一个数据集,有两个变量ID,DATE。我使用下面的代码来获取满足两个条件的行 1) 它必须是ID的第一次出现 2) 它必须在特定的日期范围内Python 评估两个条件,python,pandas,Python,Pandas,我有一个数据集,有两个变量ID,DATE。我使用下面的代码来获取满足两个条件的行 1) 它必须是ID的第一次出现 2) 它必须在特定的日期范围内 data_2 = data_1.groupby('ID').first() & datetime.date(2012,1,1) < data_1['date'] < datetime.date(2012,2,25) data_2=data_1.groupby('ID').first()&datetime.date(2012,1,1
data_2 = data_1.groupby('ID').first() & datetime.date(2012,1,1) < data_1['date'] < datetime.date(2012,2,25)
data_2=data_1.groupby('ID').first()&datetime.date(2012,1,1)
这是类型错误。有人能告诉我为什么会有打字错误吗
谢谢。
datetime。日期(2012,2,31)
超出2月的范围。谢谢您的回复,即使更正日期也会出现相同的错误。我将编辑我的问题。首先,我认为您必须将每个条件放在括号中:(data_1.groupby('ID').First())和(…)
。第二,我认为你应该把第二个条件分成两部分:(datetime.date(2012,1,1)((data\u 1.groupby('ID').first()['date']>datetime.date(2012,1,1))和(data\u 1.groupby('ID').first()['date']
生成正确的布尔掩码?通常,您应该发布完整的错误消息(以及完整的堆栈跟踪)。
np.random.seed(123)
df = pd.DataFrame({'ID':np.random.choice(list('ABCD'),50),'DATE':pd.date_range('2012-01-01',periods=50)})
mask_first = df.DATE.isin(df.groupby('ID')['DATE'].first())
mask_range = (df.DATE >= pd.to_datetime('2012-01-05')) & (df.DATE <= pd.to_datetime('2012-01-07'))
df[mask_first & mask_range]
DATE ID
4 2012-01-05 A