我的df (使用熊猫):
Value Class
1 False
5 False
7 False
2 False
4 False
3 True
2 False如果某一行的Class为True,我希望将所有n个前面的行也设置为true。假设n= 3,那么期望的输出是:
Value Class
1 False
5 False
7 True
2 True
4 True
3 True
2 False我也查找过类似的问题,但它们似乎侧重于添加新的列。我想避免这种情况,只改变现有的值。我的知识相当有限,所以我不知道如何解决这个问题。
发布于 2020-04-26 15:19:34
思想是用Series.where替换False为缺失值,然后用Series.bfill使用带limit参数的回填函数,最后将缺失值替换为False,并将值转换为布尔值:
n = 3
df['Class'] = df['Class'].where(df['Class']).bfill(limit=n).fillna(0).astype(bool)
print (df)
Value Class
0 1 False
1 5 False
2 7 True
3 2 True
4 4 True
5 3 True
6 2 Falsehttps://stackoverflow.com/questions/61437113
复制相似问题