擅长:python、mysql、java
<p>@Abhihek的答案是最有效的,但只是为了给出另一个解决方案,首先循环<code>df</code></p>
<pre><code>import numpy as np
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 index in df.index:
for key, s_elements in d.items():
df.at[index, key] = (lambda: 1 if any([s in df['Text'][index] for s in s_elements]) else 0)()
# set the type to short integers for the columns that have been added
for key in d:
df = df.astype({key: np.uint8})
print(df.head())
</code></pre>
<pre><code> 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>