我想知道每行中有多少单元格包含具有特定字符的字符串。例如:
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”的单元格数量:
a b c Count
m 1 aa zzz 0
n 2 bb byy 2
o abc cc xxx 1
p ace 5 wwb 1
str.contains
适用于 Series,不适用于 DataFrame。我可以单步执行索引并执行类似的操作
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
或
In [57]: df.apply(lambda x: x.str.contains('b').sum(), axis=1)
Out[57]:
m 0
n 2
o 1
p 1
dtype: int64
计算每行有多少个 b
:
In [50]: df.astype(str).sum(axis=1).str.count('b')
Out[50]:
m 0
n 3
o 1
p 1
dtype: int64
关于python - 查找包含特定字符的字符串的单元格数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43899187/