先按条件值分组

安娜·比阿特丽斯

我有一个熊猫数据框,如下所示:

ID 日期 地位
10 2022-01-01 0
10 2022-01-02 0
10 2022-01-03 1
10 2022-01-04 1
10 2022-01-05 1
23 2022-02-02 0
23 2022-02-03 0
23 2022-02-04 1
23 2022-02-05 1
23 2022-02-06 1

我想按 ID 分组,状态的第一个日期等于 1。

预期输出:

ID 日期 地位 first_status
10 2022-01-03 1 2022-01-03
23 2022-02-03 1 2022-02-03

在此之后,我会将这个新的 DF 与以前的 DF 合并。最终DF:

ID 日期 地位 first_status
10 2022-01-01 0 2022-01-03
10 2022-01-02 0 2022-01-03
10 2022-01-03 1 2022-01-03
10 2022-01-04 1 2022-01-03
10 2022-01-05 1 2022-01-03
23 2022-02-02 0 2022-02-04
23 2022-02-03 0 2022-02-04
23 2022-02-04 1 2022-02-04
23 2022-02-05 1 2022-02-04
23 2022-02-06 1 2022-02-04

我尝试了很多方法来做到这一点,但都不成功

不特别

获取每个 ID 的 status=1 的第一个日期。然后将每个 ID 映射到第一个日期:

#convert to datetime if needed
df["date"] = pd.to_datetime(df["date"])

df["first_status"] = df["ID"].map(df[df["status"].eq(1)].groupby("ID")["date"].min())

>>> df
   ID       date  status first_status
0  10 2022-01-01       0   2022-01-03
1  10 2022-01-02       0   2022-01-03
2  10 2022-01-03       1   2022-01-03
3  10 2022-01-04       1   2022-01-03
4  10 2022-01-05       1   2022-01-03
5  23 2022-02-02       0   2022-02-04
6  23 2022-02-03       0   2022-02-04
7  23 2022-02-04       1   2022-02-04
8  23 2022-02-05       1   2022-02-04
9  23 2022-02-06       1   2022-02-04

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章