根据具有相同日期的几行添加新列

香港

我有一个数据框如下。首先,他们有三列('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和连锁codition比较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))

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将具有相同日期的 2 个值的值移动到新列中

PHP 添加具有相同日期的数组值

合并具有相同日期的行,并在pandas中添加计数器列

在 columne 中选择具有相同日期的列

具有相同日期的记录数的列

从具有相同日期的列中减去的存储过程

在csv中聚合具有相同日期(总和)的列

如何在具有相同名称和相同日期的对象数组中添加值

如何提取与特定列中的日期具有相同日期的值?(在python中)

在具有相同日期时间轴的子图中添加垂直线

将数据框添加到R中具有相同日期的列表

匹配或返回与 R 中指定列具有相同日期的列

使用ramda筛选具有相同日期的日期列表

汇总具有相同日期的单元格,并按多个列分组

根据列值合并具有不同日期的两个表?

Google图表-具有不同日期的相同日期的折线图

设置具有相同日期的行的背景色

sql合并具有相同日期的行

从datetime具有相同日期的地方获取结果

删除具有相同日期时间戳记的记录

如何从具有相同日期时间的 phpmyadmin 获取值?

如何合并具有相同日期的行

删除具有相同日期时间的行

将具有相同日期的Pandas df行分组

如何合并具有相同日期的2个表

获取每年具有相同日期和月份的行

使用Javascript将具有相同日期的数组中的对象组合到新的对象数组中

如何修复在两列中查找相同日期并根据相同日期联接两个数据框的行

如何根据另一列有条件地添加具有新日期时间的新列