首页 > 解决方案 > 在熊猫数据框中查找给定条件的最新值

问题描述

我正在寻找一个新列,它返回不是值“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 循环来实现该列,但这在大规模上太慢了。

谢谢你的帮助。

标签: pythonpandasdataframe

解决方案


尝试通过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()

推荐阅读