计算在一个列中是否出现“ x”而在另一列中出现“ y”

时间:2019-05-11 05:08:57

标签: python pandas

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

我能够单独实现每个目标,但不能同时实现。我对使用python进行编程比较陌生,因此我不确定是否需要运行if语句,或者如何针对这种情况正确运行它。

curl -H "Content-Type: application/json" -XPUT 'https://mydomain/indexname'
                                           ^                        ^
                                           |                        |
                                        use PUT              add index name

我想知道查找同时包含“ c”和“ male”的内容的方法

1 个答案:

答案 0 :(得分:2)

如果需要测试子字符串,请使用Series.str.contains&进行按位AND和百分比使用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

如果需要检查值,请使用Series.eq==

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