在两列中访问和比较数据

时间:2019-05-04 16:34:43

标签: python pandas

对于一个数据框,对于每个条目,我想查找行数据"new_page""treatment"不匹配的次数。

有人还能向我解释如何添加图像吗? https://ibb.co/gSv7FR4

我想如果条件满足,计数就会增加。除了上述问题的解决方法之外,我还希望对如何执行此操作进行解释。

if df.group[n]=='treatment' and df.landing_page[n]=='new_page'

4 个答案:

答案 0 :(得分:0)

sum(df.group == 'treatment' & df.landing_page == 'new_page')

df.group == 'treatment'df.landing_page == 'new_page'中的每一个都是逻辑数组,指示每个谓词在True的位置。 &运算符将它们组合成一个逻辑数组,该逻辑数组指示两个谓词在True的位置。 sum命名数组将返回True个值的数量。

如果您想更详细些,

import numpy as np

sum(np.logical_and(df.group == 'treatment', df.landing_page == 'new_page'))

也可以。


尽管第一种方法更具可读性,但它会遍历数组的整个长度以创建必要的临时对象。直接的“懒惰”方式是

sum(filter(lambda x: x['group'] == 'treatment' and x['landing_page'] == 'new_page', df.iterrows()))

答案 1 :(得分:0)

让我们与pandas

堆叠
df['cnt']=(df.group.eq('treatment')&df.landing_page.eq('new_page')).astype(int)

答案 2 :(得分:0)

这将给出'new_data''treatment'在同一行中的总时间:

((df.group=='treatment') & (df.landing_page=='new_page')).sum()

答案 3 :(得分:0)

您可以使用事实在熊猫sum()函数中将True视为1:

(df.newpage!=df.treatment).sum()