为了账号安全,请及时绑定邮箱和手机立即绑定

根据等于 True 的列数选择数据框中的行

根据等于 True 的列数选择数据框中的行

白板的微信 2022-07-12 16:06:51
我想识别所有行,其中 5 列中的 4 为 True 即    df = pd.DataFrame(        [            [0, 0, 0, 0, 0],            [1, 1, 1, 1, 1],            [1, 1, 1, 1, 0],            [0, 0, 0, 0, 0],            [1, 1, 1, 0, 1],        ],        index=["abc", "def", "ghi", "jkl", "mnl"],        columns=list("abcde")    ).applymap(bool)以便....    df = pd.DataFrame(        [            [1, 1, 1, 1, 0],            [1, 1, 1, 0, 1],        ],        index=["ghi", "mnl"],        columns=list("abcde")    ).applymap(bool)我该如何解决这个问题?
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

使用sum列并按值的数量进行比较,这里4使用Series.eq和过滤boolean indexing:


print (df[df.sum(axis=1).eq(4)])

        a     b     c      d      e

ghi  True  True  True   True  False

mnl  True  True  True  False   True

详情:


print (df.sum(axis=1))

abc    0

def    5

ghi    4

jkl    0

mnl    4

dtype: int64

如果想要4或5匹配 True:


print (df[df.sum(axis=1).isin([4,5])])

        a     b     c      d      e

def  True  True  True   True   True

ghi  True  True  True   True  False

mnl  True  True  True  False   True

如果想要大于或等于 4:


print (df[df.sum(axis=1).ge(4)])

        a     b     c      d      e

def  True  True  True   True   True

ghi  True  True  True   True  False

mnl  True  True  True  False   True


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号