繁体   English   中英

Python Pandas Dataframe过滤器和替换

[英]Python Pandas Dataframe filter and replace

我构造了一个数据框,如下所示:

title category1 category2 category3 category4
'a'    0.44214    NAN        0.99     0.35
'b'      NAN      NAN        NAN       NAN
'c'      0.31      0.41       0.5       0.53

对于每一行,我想用1表示两个最高值,用0表示所有其他值。

结果应如下所示:

 title category1 category2 category3 category4
'a'    1           0          1         0
'b'    0           0          0         0
'c'    0           0          1         1

是否有内置功能可以解决此问题,否则如何实现?

您可以将数据框中的所有数值降序排列(设置axis=1 )。 然后进行布尔比较以找到小于或等于2的等级值( le(2) ),它们将是等级值1和2。最后,将布尔值掩码转换为整数。

>>> df.rank(axis=1, ascending=False, numeric_only=True).le(2).astype(int)
       category1  category2  category3  category4
title                                            
'a'            1          0          1          0
'b'            0          0          0          0
'c'            0          0          1          1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM