Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找包含特定字符的字符串的单元格数_Python_Pandas - Fatal编程技术网

Python 查找包含特定字符的字符串的单元格数

Python 查找包含特定字符的字符串的单元格数,python,pandas,Python,Pandas,我想知道每行有多少个单元格包含带有特定字符的字符串。例如: d = {'a':[1,2,'abc','ace'],'b':['aa','bb','cc',5],'c':['zzz','byy','xxx','wwb']} df = pd.DataFrame(d, index=['m','n','o','p']) df a b c m 1 aa zzz n 2 bb byy o abc cc xxx p ace 5 wwb 我想知道每行中包含“

我想知道每行有多少个单元格包含带有特定字符的字符串。例如:

d = {'a':[1,2,'abc','ace'],'b':['aa','bb','cc',5],'c':['zzz','byy','xxx','wwb']}
df = pd.DataFrame(d, index=['m','n','o','p'])
df

    a   b   c
m   1   aa  zzz
n   2   bb  byy
o   abc cc  xxx
p   ace 5   wwb
我想知道每行中包含“b”的单元格数:

str.contains
适用于系列,而不是数据帧。我可以一步一步地浏览索引,然后做类似的事情

df.loc['m','Count'] = df.loc['m'].str.contains('b').sum()

但似乎应该有一个更简单的解决方案,我现在还没有找到。

更新:

In [60]: df.apply(lambda x: x.str.contains('b')).sum(1)
Out[60]:
m    0.0
n    2.0
o    1.0
p    1.0
dtype: float64

要计算每行有多少个
b

In [50]: df.astype(str).sum(axis=1).str.count('b')
Out[50]:
m    0
n    3
o    1
p    1
dtype: int64

使用applymap的另一个解决方案:

df['Count'] = np.sum(df.applymap(lambda x: 'b' in str(x)),1)

df
Out[99]: 
     a   b    c  Count
m    1  aa  zzz      0
n    2  bb  byy      2
o  abc  cc  xxx      1
p  ace   5  wwb      1
In [50]: df.astype(str).sum(axis=1).str.count('b')
Out[50]:
m    0
n    3
o    1
p    1
dtype: int64
df['Count'] = np.sum(df.applymap(lambda x: 'b' in str(x)),1)

df
Out[99]: 
     a   b    c  Count
m    1  aa  zzz      0
n    2  bb  byy      2
o  abc  cc  xxx      1
p  ace   5  wwb      1