首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如果DataFrame中的行x为真,如何将前n行设置为真

Python:如果DataFrame中的行x为真,如何将前n行设置为真
EN

Stack Overflow用户
提问于 2020-04-26 15:17:41
回答 1查看 29关注 0票数 1

我的df (使用熊猫):

代码语言:javascript
复制
Value    Class
1        False
5        False
7        False
2        False
4        False
3        True
2        False

如果某一行的Class为True,我希望将所有n个前面的行也设置为true。假设n= 3,那么期望的输出是:

代码语言:javascript
复制
Value    Class
1        False
5        False
7        True
2        True
4        True
3        True
2        False

我也查找过类似的问题,但它们似乎侧重于添加新的列。我想避免这种情况,只改变现有的值。我的知识相当有限,所以我不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 15:19:34

思想是用Series.where替换False为缺失值,然后用Series.bfill使用带limit参数的回填函数,最后将缺失值替换为False,并将值转换为布尔值:

代码语言:javascript
复制
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  False
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61437113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档