对于一个数据框,对于每个条目,我想查找行数据"new_page"
和"treatment"
不匹配的次数。
有人还能向我解释如何添加图像吗? https://ibb.co/gSv7FR4
我想如果条件满足,计数就会增加。除了上述问题的解决方法之外,我还希望对如何执行此操作进行解释。
if df.group[n]=='treatment' and df.landing_page[n]=='new_page'
答案 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()