python - 在熊猫数据框中查找给定条件的最新值
问题描述
我正在寻找一个新列,它返回不是值“C”的最新值
例如,我希望能够生成如下所示的“New_Column”
Current_Column New_Column
B B
S S
B B
S S
C S
B B
S S
C S
C S
B B
我尝试使用 .shift() 方法,该方法可以正常工作,直到您获得 2 个或更多连续的“C”值。
我已经能够通过使用 .loc 内部的 for 循环来实现该列,但这在大规模上太慢了。
谢谢你的帮助。
解决方案
尝试通过where()
和ffill()
:
df['New_Column']=df['Current_Column'].where(df['Current_Column']!='C').ffill()
或者
通过np.where()
和ffill()
:
#import numpy as np
df['New_Column']=np.where(df['Current_Column']!='C',df['Current_Column'],np.nan).ffill()
或者
通过mask()
和ffill()
:
#thanks to @HenryEcker for this
df['New_Column']=df['Current_Column'].mask(df['Current_Column'].eq('C')).ffill()
推荐阅读
- reactjs - 警告:无效的 DOM 属性 `tabindex`。您是说“tabIndex”吗?
- node.js - 无法在 Azure 上发出 POST 请求 - EACCES
- python-3.x - `fixed-point` 中的内部 `try` 交互
- java - 如何在数组列表(Java)中搜索对象的元素,如果存在,则打印该对象的 .toString
- swift - 子类和超类的 Swift 约束协议
- java - 从子类对象调用非覆盖方法
- java - swing中视觉组件的动态更新
- php - 匹配 \r\n 的所有实例,但出现在文档末尾之前的除外
- json - 正则表达式提取 json 中没有键值的 UUID
- reactjs - 无法扩展反应扩展类