如果“x”出现在一列中而“y”出现在另一列中,则计数

2024-03-29 11:38:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

我想知道如何找到同时包含“c”和“male”的内容


Tags: 目标编码lenif字母情况语句male
1条回答
网友
1楼 · 发布于 2024-03-29 11:38:56

如果需要测试子字符串使用^{}&进行按位和百分比使用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

相关问题 更多 >