擅长:python、mysql、java
<pre><code>import pandas as pd
d = {'Dogs': ['StringA', 'StringL'],'Cats': ['StringB', 'StringZ', 'StringJ'],'Birds': ['StringK', 'StringY']}
df = pd.DataFrame({'Text': ['StringA. StringB. StringC', 'StringZ. StringY. StringX', 'StringL. StringK. StringJ',
'StringA. StringZ. StringJ']})
for k,v in d.items(): # Key, value iteration of dict
df[k] = df.apply(lambda x: 1 if any([s in x['Text'] for s in v]) else 0, axis=1)
# Apply lambda function to each row in the new column. If any of the values in the array is present in the text, its a 1
# Output
Text Dogs Cats Birds
0 StringA. StringB. StringC 1 1 0
1 StringZ. StringY. StringX 0 1 1
2 StringL. StringK. StringJ 1 1 1
3 StringA. StringZ. StringJ 1 1 0
</code></pre>
<p>如果字符串较大或有许多字符串,则此解决方案可能不理想。在这种情况下,您可能需要添加一个具有某种Trie数据结构的附加列</p>
<p>但上述解决方案应适用于大多数中等情况</p>