繁体   English   中英

熊猫每行查找唯一条目,而忽略特定数量

[英]Pandas find unique entries per row, ignoring a specific number

我有一个简单的数据集,已作为数据帧存储在熊猫中。 我已经尝试过每行来测量唯一条目的数量,但是如果显示为-1,则忽略它。

在数据框附加列的下方 在此处输入图片说明

...

在此处输入图片说明

我正在通过添加此列

pdSequences['unique']=pdSequences.apply(pd.Series.nunique, axis=1)

但是如您所见,代码并不总是能够正常工作。 第一行正确返回唯一性为4(忽略最后两个-1)。

如果您看到第28行,我想返回5,但是代码返回6。

您能帮助我理解为什么我得到这两种不同类型的行为以及如何计算唯一条目(但忽略-1)吗?

谢谢亚历克斯

您的代码当前仅计算每行唯一条目的数量,因为您没有做任何忽略-1的操作。 这是您可以执行的操作:

a = pd.DataFrame({'0':[58, 59, 60],
                 '1':[58, 60, -1],
                 '2':[-1, 61, -1]})
def myfunc(row):
    if -1 in row.values:
        return row.nunique() - 1
    else:
        return row.nunique()

a['unique'] = a.apply(myfunc, axis=1)
a

     0   1   2  unique
0   58  58  -1  1
1   59  60  61  3
2   60  -1  -1  1

您可以使用

a[a!=-1].nunique(axis=1)

忽略精确的-1值,或

a[a>-1].nunique(axis=1)

忽略任何负值。

暂无
暂无

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

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