Python 如果';x';在一列中发生,并且';y';发生在另一个

Python 如果';x';在一列中发生,并且';y';发生在另一个,python,pandas,Python,Pandas,我需要找到包含字母“c”且也是男性的姓名的百分比 我可以单独实现每一个目标,但不能一起实现。我对python编码比较陌生,所以我不确定是否需要运行if语句,或者如何在这种情况下正确运行它 len(dogs[dogs['Name'].str.contains('c')]) len(dogs[dogs['Gender'].str.contains('male')]) 我想知道如何找到同时包含“c”和“male”的内容,如果需要,请使用&对按位和百分比使用mean,或计数使用sum:

我需要找到包含字母“c”且也是男性的姓名的百分比

我可以单独实现每一个目标,但不能一起实现。我对python编码比较陌生,所以我不确定是否需要运行if语句,或者如何在这种情况下正确运行它

    len(dogs[dogs['Name'].str.contains('c')])
    len(dogs[dogs['Gender'].str.contains('male')])

我想知道如何找到同时包含“c”和“male”的内容,如果需要,请使用
&
对按位和百分比使用
mean
,或计数使用
sum

dogs = pd.DataFrame({
         'Name':['abc','c','sa'],
         'Gender':['female','male','female']
})

print (dogs)
  Name  Gender
0  abc  female
1    c    male
2   sa  female

m1 = dogs['Name'].str.contains('c')
m2 = dogs['Gender'].str.contains('male')
print (m1)
0     True
1     True
2    False
Name: Name, dtype: bool

print (m2)
0    True
1    True
2    True
Name: Gender, dtype: bool

print ((m1 & m2).mean())
0.6666666666666666

print ((m1 & m2).sum())
2
如果需要检查值,请使用或
==

m1 = dogs['Name'].eq('c')
m2 = dogs['Gender'].eq('male')

m1 = dogs['Name'] == 'c'
m2 = dogs['Gender'] == 'male'

print (m1)
0    False
1     True
2    False
Name: Name, dtype: bool

print (m2)
0    False
1     True
2    False
Name: Gender, dtype: bool

print ((m1 & m2).mean())
0.3333333333333333

print ((m1 & m2).sum())
1