我试图对包含两列的dataframe执行条件检查,如下所示:除非两个值相等,否则任何一列的内容都不能位于另一列中-不可能存在两列中都存在值且值不相等的实例。在
在下面的示例中,条件满足。尽管如此alternahaircare.com网站在列-domain和credit\u domain中,只有在这种情况下,两个值都相等。在
Out[198]: df
domain credit_domain
2 alternahaircare.com alternahaircare.com
3 alternahaircare.myshopify.com alternahaircare.com
4 shop.alternahaircare.com alternahaircare.com
5 americancrew.com americancrew.com
以下是上述两个修改后的示例,其中不满足我想要满足的条件:
在这一行中,可以看到domain=alternahaircare和credit_domain=americancrew.com网站. 这是错误的-现在alternahaircare.com网站在两列中都发生,但存在一个实例,其中credit_domain列中的值与domain列不匹配。在
^{pr2}$下面的例子也是错误的-不符合我想要满足的条件。虽然有一个alternahaircare.com网站== alternahaircare.com网站,还有一个alternahaircare.com网站被分配给一个不是它自身的值,即。americacrew.com网站在
Out[198]: df
domain credit_domain
2 alternahaircare.com alternahaircare.com
3 alternahaircare.myshopify.com alternahaircare.com
4 shop.alternahaircare.com alternahaircare.com
5 alternahaircare.com americancrew.com
第二个问题可以很容易地解决,方法是检查域值的计数,并确定发生两次的任何情况。在
第一个问题把我搞糊涂了。我的方法是识别潜在的问题行,然后尝试使用groupby和条件语句:
potential_error_rows = df[df.credit_domain.isin([x for x in df.credit_domain.tolist() if x in df.domain.tolist()])]
想不出除此之外还能做什么!在
我已经很接近了,找到了答案:
如果我正确地理解了您想要的列之间的映射,您可以简单地检查
domain
中是否有与这两个行对应的行credit_domain
credit_domain
中的行值。在像这样
它返回示例数据帧的}。在
True
、False
和{相关问题 更多 >
编程相关推荐