擅长:python、mysql、java
<p>@U-12-Forward有一个很好的解决方案,如果只假设有一个新列的标题是字符串'dept',而不是循环中每个<code>dept</code>变量的值</p>
<p>如果目的是为<code>depts</code>中的每个<code>dept</code>创建一个新列,则删除列索引器中“dept”周围的引号:</p>
<pre><code>for dept in depts:
df[dept] = np.where(df.a.str.contains(dept), dept, "Unknown")
</code></pre>
<hr/>
<p>该示例令人困惑,因为由于变量名的原因,不清楚每个<code>dept</code>(即PHYS,PSYCH)是否应该有一个新列</p>
<p>这段摘录不会“起作用”,因为它会用“PSYCH”和“Unknown”(没有“PHYS”)的组合来覆盖第二个作业的<code>df['dept']</code></p>
<pre><code>df['dept'] = np.where(df.a.str.contains("PHYS"), "PHYS", "Unknown")
df['dept'] = np.where(df.a.str.contains("PSYCH"), "PSYCH", "Unknown")
</code></pre>
<p>如果列<code>a</code>中没有包含<code>depts</code>中最后一个元素的字符串,那么您所描述的肯定会发生,因为最后一个<code>np.where</code>的结果将是所有<code>False</code>,因此返回完整的“未知”序列</p>