python - 计数 'x' 是否出现在一列中并且 'y' 出现在另一列中

标签 python pandas

我需要找到包含字母“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/

相关文章:

python - Python后端图像处理的建议

Python 不打开日文文件名

python - python中的文本自动填充程序存在列表索引问题

python - 使用Python解析器嗅探分隔符垃圾邮件发送到STDOUT

python - 将 2010 Q1 转换为日期时间 2010-3-31

python - 向父类中的函数添加条件更好,还是为每个子类定义单独的函数更好?

python - 如何在 python 2.5 中将 UTF8 字符串转换为 HTML 字符串以正确显示重音?

python - Pandas 值(value)错误: invalid literal for int() with base 10: ''

python - Pandas 检测过日日期

python - Pandas 对分组数据执行操作