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

查找仅在某些列中具有值的行

查找仅在某些列中具有值的行

三国纷争 2021-06-12 10:05:41
我有一个这样的数据框:>>> o1.columns索引([1, 2, 3, 4, 5, 6, 'm1', 'm2', 7, 'm3', 8, 'm4', 9], dtype='object')我想找到仅包含数据且仅在 m1、m2、m3 和 m4 中的行,但其余列为 nan 或空。是否可以?我或多或少尝试过如下:>>> o11=o1[(1==@nan) && (2==@nan) && (3==@nan) && (4==@nan) && (5==@nan) && (6==@nan) && (7==@nan) && (8==@nan) && (9==@nan) && (o1.m1!=@nan) && (o1.m2!=@nan) && (o1.m3!=@nan) && (o1.m4!=@nan)]但它不起作用。也试过“pd.query”。也许我错过了非常简单的事情。谢谢你的帮助
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

沿着第一个轴调用notna/isna和any/,all以及掩码和索引。


cols = ['m1', 'm2', 'm3', 'm4']

diff = df.columns.difference(cols).tolist()


df[df[cols].notna().any(1) & df[diff].isna().all(1)]

这是假设您希望所有数据m*都不为空,反之亦然。


查看完整回答
反对 回复 2021-06-15
?
慕的地6264312

TA贡献1817条经验 获得超6个赞


给定数据帧 df 为:


df = 

         1    2    3    4    5    6    7    8    9   m1   m2    m3   m4

    0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN  NaN

    1  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN  NaN

    2  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN  NaN

    3  NaN    4  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.5  1.7  1.23  1.6

    4  NaN    1  NaN  NaN    1  NaN  NaN  NaN   12  NaN  NaN   NaN  NaN

    5  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN  NaN

    6  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN    1  1.2   1.2  1.5

    7  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN  NaN

    8  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN  NaN

    9  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   NaN  NaN

我们只希望返回索引 = 6 处的行(根据您的要求):


m1 = df[[1,2,3,4,5,6,7,8,9]].isna().sum(axis = 1) == 9


m2 = df[['m1', 'm2', 'm3', 'm4']].isna().sum(axis = 1) == 0


df[m1 & m2]

输出:


     1    2    3    4    5    6    7    8    9 m1   m2   m3   m4

6  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1  1.2  1.2  1.5


查看完整回答
反对 回复 2021-06-15
  • 2 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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