[英]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.