python - 如何根据上一行的值添加新列

标签 python pandas dataframe pandas-groupby

我有一个数据框如下。起初,它们有三列('date','time','flag')。我想添加一个基于标志和日期的列,这意味着当我得到 flag=1 时,这一天剩下的时间目标为 1,否则目标为零。

  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     1
3 2017/4/10   13:00:00  0     1
4 2017/4/10   14:00:00  0     1
5 2017/4/11   10:00:00  1     1
6 2017/4/11   11:00:00  0     1
7 2017/4/11   12:00:00  1     1
8 2017/4/11   13:00:00  1     1
9 2017/4/11   14:00:00  0     1
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     1
18 2017/4/13  13:00:00  1     1
19 2017/4/13  14:00:00  0     1

最佳答案

使用DataFrameGroupBy.cumsum对于累积总和 flag 值,与 0 比较,最后将掩码转换为 integer:

df['new'] = (df.groupby('date')['flag'].cumsum() > 0).astype(int)
print (df)
         date      time  flag  target  new
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       1    1
3   2017/4/10  13:00:00     0       1    1
4   2017/4/10  14:00:00     0       1    1
5   2017/4/11  10:00:00     1       1    1
6   2017/4/11  11:00:00     0       1    1
7   2017/4/11  12:00:00     1       1    1
8   2017/4/11  13:00:00     1       1    1
9   2017/4/11  14:00:00     0       1    1
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       1    1
18  2017/4/13  13:00:00     1       1    1
19  2017/4/13  14:00:00     0       1    1

关于python - 如何根据上一行的值添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54125245/

相关文章:

python - Conda 是否取代了对 virtualenv 的需求?

python - Google App Engine 部署失败。找不到 pywin32==xxx 的匹配发行版

python - 如何在带有日期时间和数字输入的 pandas 数据框中创建唯一的 ID?

python - 阅读 excel 框架时跳过特定的一组列 - pandas

python - 转换 Pandas DataFrame,添加行值作为列标题

php - Tornado 405 错误 POST 方法不允许

python - 使用套接字 API 编写基本的 HTTP 服务器

python - 取消嵌套 Numpy 数组

python - 在 pandas DataFrame 中查找前 3 天的最低值

python - 如何有效访问 Pandas 中满足条件的第一个和最后一个出现的索引