<h2>给定一个数据帧<code>sample</code></h2>
<ul>
<li>使用<a href="https://numpy.org/doc/1.18/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd2>}</a></li>
<li>使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.contains.html#pandas-series-str-contains" rel="nofollow noreferrer">^{<cd3>}</a></li>
<li>字符串可能是大写或小写,因此最好强制使用一个大小写,因为Giggly!=傻笑</li>
<li><code>for row in sample["Effects"]</code>告诉我您正在使用数据帧。千万不要使用<code>for-loop</code>到<a href="https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas/55557758#55557758">iterate through a dataframe</a></李>
</ul>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
import numpy as np
# create dataframe
data = {'Effects': ['I feel great', 'I feel sleepy', 'I fell hungry', 'I feel giggly', 'I feel tingly', 'I feel aroused', 'I feel talkative']}
sample = pd.DataFrame(data)
| | Effects |
| -:|: -|
| 0 | I feel great |
| 1 | I feel sleepy |
| 2 | I fell hungry |
| 3 | I feel giggly |
| 4 | I feel tingly |
| 5 | I feel aroused |
| 6 | I feel talkative |
undesired_effects = ["Sleepy", "Hungry", "Giggly", "Tingly", "Aroused", "Talkative"]
# words should be 1 case for matching, lower in this instance
undesired_effects = [effect.lower() for effect in undesired_effects]
# values to match as string with | (or)
match_vals = '|'.join(undesired_effects)
# create the nice buds column
sample['nice buds'] = np.where(sample['Effects'].str.lower().str.contains(match_vals), 0, 1)
</code></pre>
<h2><code>display(sample)</code></h2>
<pre class="lang-py prettyprint-override"><code>| | Effects | nice buds |
| -:|: -| :|
| 0 | I feel great | 1 |
| 1 | I feel sleepy | 0 |
| 2 | I fell hungry | 0 |
| 3 | I feel giggly | 0 |
| 4 | I feel tingly | 0 |
| 5 | I feel aroused | 0 |
| 6 | I feel talkative | 0 |
</code></pre>