<p>要为Pandas编写惯用代码并利用Pandas的高效数组处理,您应该避免自己编写循环数组的代码。Pandas允许您在高效的numpy ndarray数据结构上使用矢量化来编写简洁的代码,同时高效地进行处理。在底层,它使用优化的C语言二进制代码进行快速数组处理。Pandas已经在幕后处理了必要的循环,这也是使用Pandas by single语句而无需显式编写循环来迭代所有元素的优势。通过使用Pandas,您将更好地享受其快速高效但简洁的矢量化处理</p>
<p>由于公式基于条件,因此不能使用直接乘法。相反,您可以按如下方式使用<a href="https://numpy.org/doc/stable/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>import numpy as np
df['Pow_calkowita'] = np.where(df['liczba_kon'] == 0, df['Powierzchn'], df['Powierzchn'] * df['liczba_kon'])
</code></pre>
<p>当第一个参数中的测试条件为真时,取第二个参数的值,否则取第三个参数的值</p>
<p>测试运行输出:<strong>(在末尾再添加两个测试用例;一个测试用例的值为0<code>liczba_kon</code>)</strong></p>
<pre><code>print(df)
liczba_kon Powierzchn Pow_calkowita
0 3 69.60495 208.81485
1 1 39.27270 39.27270
2 1 130.41225 130.41225
3 1 129.29570 129.29570
4 1 294.94400 294.94400
5 1 64.79345 64.79345
6 1 108.75560 108.75560
7 1 35.12290 35.12290
8 1 178.23905 178.23905
9 1 263.00930 263.00930
10 1 32.02235 32.02235
11 1 125.41480 125.41480
12 1 47.05420 47.05420
13 1 45.97135 45.97135
14 1 154.87120 154.87120
15 1 37.17370 37.17370
16 1 37.80705 37.80705
17 1 38.78760 38.78760
18 1 35.50065 35.50065
19 1 74.68940 74.68940
20 0 69.60495 69.60495
21 2 74.68940 149.37880
</code></pre>