gpt4 book ai didi

python - 根据具有相同日期的多行添加新列

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:26 25 4
gpt4 key购买 nike

我有一个数据框如下。起初,它们有三列('date','time','flag')。我想添加一个基于标志和日期的列,这意味着当我在第一天得到 flag=1 时,此行目标是 1,另一个这一天的目标是 0

  date        time      flag  target
0 2017/4/10 10:00:00 0 0
1 2017/4/10 11:00:00 1 1
2 2017/4/10 12:00:00 0 0
3 2017/4/10 13:00:00 0 0
4 2017/4/10 14:00:00 0 0
5 2017/4/11 10:00:00 1 1
6 2017/4/11 11:00:00 0 0
7 2017/4/11 12:00:00 1 0
8 2017/4/11 13:00:00 1 0
9 2017/4/11 14:00:00 0 0
10 2017/4/12 10:00:00 0 0
11 2017/4/12 11:00:00 0 0
12 2017/4/12 12:00:00 0 0
13 2017/4/12 13:00:00 0 0
14 2017/4/12 14:00:00 0 0
15 2017/4/13 10:00:00 0 0
16 2017/4/13 11:00:00 1 1
17 2017/4/13 12:00:00 0 0
18 2017/4/13 13:00:00 1 0
19 2017/4/13 14:00:00 0 0

最佳答案

比较 DataFrameGroupBy.cumsum通过 1 和链式条件将 flag 通过 1bitwise AND 进行比较并转换为整数:

df['target1'] = (df.groupby('date')['flag'].cumsum().eq(1) & df['flag'].eq(1)).astype(int)
date time flag target target1
0 2017/4/10 10:00:00 0 0 0
1 2017/4/10 11:00:00 1 1 1
2 2017/4/10 12:00:00 0 0 0
3 2017/4/10 13:00:00 0 0 0
4 2017/4/10 14:00:00 0 0 0
5 2017/4/11 10:00:00 1 1 1
6 2017/4/11 11:00:00 0 0 0
7 2017/4/11 12:00:00 1 0 0
8 2017/4/11 13:00:00 1 0 0
9 2017/4/11 14:00:00 0 0 0
10 2017/4/12 10:00:00 0 0 0
11 2017/4/12 11:00:00 0 0 0
12 2017/4/12 12:00:00 0 0 0
13 2017/4/12 13:00:00 0 0 0
14 2017/4/12 14:00:00 0 0 0
15 2017/4/13 10:00:00 0 0 0
16 2017/4/13 11:00:00 1 1 1
17 2017/4/13 12:00:00 0 0 0
18 2017/4/13 13:00:00 1 0 0
19 2017/4/13 14:00:00 0 0 0

另一种解决方案:

df['target1'] = ((~df.loc[df['flag']==1, 'date'].duplicated())
.reindex(df.index, fill_value=False).astype(int))

关于python - 根据具有相同日期的多行添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54231398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com