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