擅长:python、mysql、java
<p>用途:</p>
<pre><code>splitsE = (df.COLUMN_1.str.contains(' Each')) & (df.COLUMN_2.str.contains(' EACH'))
</code></pre>
<p>我认为最简单的方法是将布尔掩码转换为<code>True/False</code>到<code>1/0</code>映射的整数:</p>
<pre><code>df['CASE#'] = splitsE.astype(int)
</code></pre>
<hr/>
<p>另一种解决方案是使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd3>}</a>:</p>
<pre><code>df['CASE#'] = np.where(splitsE, 1, 0)
</code></pre>
<p>或<code>map</code>已删除词典<code>()</code>:</p>
<pre><code>df['CASE#'] = splitsE.map({True:'1', False:'0'})
</code></pre>
<p>编辑:对于另一个条件,请使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.select.html" rel="nofollow noreferrer">^{<cd6>}</a>:</p>
<pre><code>mask1 = df.COLUMN_3.str.contains('EACH', case=False, na=False)
mask2 = df.COLUMN_3.str.contains('/', case=False, na=False)
df['CASE#'] = np.select([mask1, mask2], [1, 2], default=0)
print (df)
COLUMN_3 CASE#
0 25/PACK 2
1 EACH 1
2 100/BOTTLE 2
3 25/PACK 2
4 NaN 0
5 3/PACK 2
6 EACH 1
</code></pre>