我有一个包含列 A
和 B
的 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/