通过忽略空值来比较列(熊猫)

数据框:

         data=pd.DataFrame({'name':['A','B','C'],
          'rank':[np.nan,2,3],
          'rank1':[2,np.nan,2],
          'rank2':[3,1,np.nan],
          'rank4':[4,2,3]})

我的代码:

           data['Diff']=np.where((data['rank']<data['rank1'])&(data['rank1']<data['rank2'])&(data['rank2']<data['rank4']),1,0)

要求忽略空值并比较其余的数值希望 A 的差异为 1(如果排名不断增加,则忽略空值)

回答

我们可以filterrank像列,那么前锋填补axis=1传播最后的有效值,然后计算diff沿着axis=1以检查单调

r = df.filter(like='rank')
data['diff'] = r.ffill(1).diff(axis=1).fillna(0).ge(0).all(1)

  name  rank  rank1  rank2  rank4   diff
0    A   NaN    2.0    3.0      4   True
1    B   2.0    NaN    1.0      2  False
2    C   3.0    2.0    NaN      3  False


以上是通过忽略空值来比较列(熊猫)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>