使用前面的question中的代码,我们简单地将any方法更改为sum方法。将所有的1相加,以有效地计算给定行(轴=1)中出现的次数。在## added and extra Jones into row 1 for 'Jan' column
sales = [{'account': 'Jones LLC', 'Jan': 'Jones', 'Feb': '200', 'Mar': '140'},
{'account': 'Alpha Co', 'Jan': 'Jones', 'Feb': '210', 'Mar': '215'},
{'account': 'Blue Inc', 'Jan': '50', 'Feb': '90', 'Mar': '95' }]
df = pd.DataFrame(sales)
df_list = []
for search_string in ['Jones', 'Co', 'Alpha']:
#use above method but rename the series instead of setting to
# a columns. The append to a list.
df_list.append(df.apply(lambda x: x.str.contains(search_string))
.sum(axis=1) ## HERE IS SUM in place of any
.astype(int)
.rename(search_string))
#concatenate the list of series into a DataFrame with the original df
df = pd.concat([df] + df_list, axis=1)
df
Out[2]:
Feb Jan Mar account Jones Co Alpha
0 200 Jones 140 Jones LLC 2 0 0
1 210 Jones 215 Alpha Co 1 1 1
2 90 50 95 Blue Inc 0 0 0