代码之家  ›  专栏  ›  技术社区  ›  Emac

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

  •  1
  • Emac  · 技术社区  · 8 年前

    我尝试遍历数据帧中的行,检查日期是否等于特定日期,如果等于,则返回另一个单元格的值。我想我可以创建一个掩码来实现这一点,然后使用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 回复  |  直到 8 年前
        1
  •  1
  •   petezurich rdelmar    8 年前

    您不需要迭代,只要获取条件为真的所有行的索引:

    df["bday_is_today"] = False
    bdays = df[pd.to_datetime(df['birth_date']) == '1990-12-10'].index
    df.loc[bdays, 'bday_is_today'] = True