我需要找到包含字母“c”并且也是男性的名字的百分比。
我能够单独实现每一个目标,但不能一起实现。我对 python 编码比较陌生,所以我不确定是否需要运行 if 语句,或者如何在这种情况下正确运行它。
len(dogs[dogs['Name'].str.contains('c')])
len(dogs[dogs['Gender'].str.contains('male')])
我想知道如何找到同时包含“c”和“male”的内容
最佳答案
如果需要测试子字符串,请使用 Series.str.contains
与 &
进行按位与,对于百分比使用 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
关于python - 计数 'x' 是否出现在一列中并且 'y' 出现在另一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56087381/