我正在尝试遍历Pandas数据框中的行,并检查日期是否等于特定日期,如果是,则返回另一个单元格的值。我想我可以创建一个掩码来执行此操作,然后使用np.where将True或False分配给这些行。我过去使用字符串和整数来完成此操作,但是现在它使用的是日期,因此无法正常工作。
如果我这样做:
df[pd.to_datetime(df['birth_date']) == '1990-12-10']
它返回生日为该天的人所在的行。
但是,如果我这样做:
for index, row in df.iterrows():
bday_mask = (pd.to_datetime(row['birth_date']) == '1990-12-10')
df['bday_is_today'] = np.where(bday_mask, True, False)
它将每一行分配为“ False”。如果行的出生日期等于该日期,我该如何在行上标记?
答案 0 :(得分:1)
您无需进行迭代,只需获取条件为真的所有行的索引:
df["bday_is_today"] = False
bdays = df[pd.to_datetime(df['birth_date']) == '1990-12-10'].index
df.loc[bdays, 'bday_is_today'] = True