微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Pandas-检查值是否在前n行中

我们有以下代码

import pandas as pd
table = {"Col 1":{"0":"Row 1","1":"Row 2","2":"Row 3","3":"Row 4","4":"Row 5","5":"Row 6","6":"Row 7","7":"Row 8","8":"Row 9","9":"Row 10"},"Col 2":{"0":0,"1":1,"2":0,"3":0,"4":1,"5":0,"6":0,"7":1,"8":1,"9":1}}
tabledf = pd.DataFrame(table)
tabledf["Col 3"] = "??"

哪个返回:

    Col 1  Col 2 Col 3
0   Row 1      0    ??
1   Row 2      1    ??
2   Row 3      0    ??
3   Row 4      0    ??
4   Row 5      1    ??
5   Row 6      0    ??
6   Row 7      0    ??
7   Row 8      1    ??
8   Row 9      1    ??
9  Row 10      1    ??

在第3列中,我们希望在前2行中显示1,在第2行中显示1(在下面显示0).
这是所需的输出

Col 3
0
1
0
0
1
0
0
0
0
0

我们该怎么做呢?

解决方法:

您的逻辑可以分为两个条件,必须同时满足两个条件:

> Col 2等于1.
> Col 2的计数等于1小于或等于2.

然后,您可以矢量化方式应用此方法,最后一步将其转换为int:

df['Col 3'] = (df['Col 2'].eq(1) & df['Col 2'].eq(1).cumsum().le(3)).astype(int)

print(df)

    Col 1  Col 2  Col 3
0   Row 1      0      0
1   Row 2      1      1
2   Row 3      0      0
3   Row 4      0      0
4   Row 5      1      1
5   Row 6      0      0
6   Row 7      0      0
7   Row 8      1      0
8   Row 9      1      0
9  Row 10      1      0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐