python - 填充前向条件结果

标签 python numpy pandas dataframe vectorization

我有一个包含列 AB 的 DataFrame。现在我想生成这样的C列:

       A   B   C
index  
 1     0   50   NaN
 2     1   60   60
 3     0   40   60
 4     0   30   60 
 5     1   40   40
如果此行中 A==1

C 获取 B 的值。然后该值将保留在接下来的行中,直到下一次 A==1。我如何以矢量化方式执行此操作?

最佳答案

您可以选择 B 的值(其中 A==1),然后向前填充:

a = pd.DataFrame({"A":[0,1,0,0,1], "B":[50,60,40,30,40]}, index=[1,2,3,4,5])
a["C"] = a.B[a.A == 1]
a = a.fillna(method="ffill")

ffill 方法向前传播最后一个有效观察值以填充 NaN。请参阅http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html了解更多信息。

这给出:

   A   B   C
1  0  50 NaN
2  1  60  60
3  0  40  60
4  0  30  60
5  1  40  40

关于python - 填充前向条件结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37763267/

相关文章:

python - 如何根据评估每一行以查看数据是否存在来将数据插入 pandas 数据框

python - _tkinter.TclError : invalid command name ".54600176" error, 这是怎么回事?

python - 如何键入提示返回当前类实例的函数?

python - 'self' 关键字在类方法中是强制性的吗?

python - 如何将自定义函数应用于 xarray.DataArray.coarsen.reduce()?

python - 从 ctypes 数组中获取数据到 numpy

python - 将 n 维数组缩减为带有附加列的二维数组

python - 如何找出列中唯一值的数量以及数据框中唯一值的数量?

python - 无法安装 Pandas!帮助! (pip 安装 Pandas )

python - 引用字典中列表中的集合的值