python - 如何仅在熊猫中查看选定案例的前一行的值
问题描述
我的数据如下所示。
col_1 col_2
1 1
1 1
p 0
1 1
n 2
n 2
p 0
p 0
我想从 col_1 计算 col_2 中的值。我要应用的逻辑是:当 col_1 值 ='p' 时,将 col_2 中的值替换为上一行的 col_2 值和 col_2 中的其他值对于 col_1 的任何其他值都不会改变,最终预期输出如下:
col_1 col_2
1 1
1 1
p **1**
1 1
n 2
n 2
p **2**
p **2**
除了其他列之外,我还根据 assign() 函数中的日期计算这些列。这是我无法弄清楚的唯一步骤。因为在这一行中,我正在查看前一行的值;所以 shift() 可以工作,但我只需要在 col_1 ='p' 时查找 col_2 的先前值。目前我正在通过 for 循环进行操作,这使我可以灵活地回顾 1 行并检查/替换值。由于 for 循环,这不是一个有效的解决方案。
您知道如何避免 for 循环并以更多熊猫方式进行吗?
解决方案
您可以mask
使用ffill
:
df['col_2'] = df['col_2'].mask(df['col_1']=='p').ffill()
推荐阅读
- python - 当多个存在时如何使用特定版本的 virtualenvwrapper?
- excel - 链接中的 VBA HTML 拉取列表信息
- python - 如何使用 Stripe 在 Django 中处理特定型号的价格
- python - 全新安装 Anaconda 和 PyCharm 控制台后不会连接 DLL 加载失败
- python - 为什么要使用 numpy.zeros((2,2)) 而不是 numpy.zeros(2,2) 创建 2x2 零矩阵?
- java - java.lang.noclassdeffounderror:使用 javax.mail jar 时
- python - 删除人员未更改位置的行
- php - 准备要添加到数据库的字符串数组
- cmake - 使用 CMake 为不同的构建类型构建了两个不同的 Debian 包
- excel - CommandButton:在单击时更改按钮的 bgcolor