如果行包含日期,则获取其他单元格的值

时间:2018-10-01 16:45:03

标签: python pandas datetime

我正在尝试遍历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”。如果行的出生日期等于该日期,我该如何在行上标记?

1 个答案:

答案 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