<p>您可以尝试以下方法:</p>
<pre><code>df['C'] = np.where(df.B.eq(df.A.map(countries_dict)), True, False)
</code></pre>
<p>输出:</p>
<pre><code> A B C
0 ANZ apj_anz True
1 ANZ apj_aus False
2 AU apj_aus True
3 NZ apj_nzl True
4 ANZ apj_anz True
5 ANZ apj_aus False
6 AU apj_aus True
7 NZ apj_nzl True
8 ANZ apj_anz True
9 ANZ apj_aus False
</code></pre>
<p>这将避免创建helper列,从而减少内存使用</p>
<p>您还可以尝试将列<code>A</code>和<code>B</code>转换为分类列,以防这些列中的不同元素数量较少。这将进一步减少内存消耗并提高性能</p>
<p><strong>示例:</strong></p>
<p>为a列和B列创建了具有10个不同值的样本df</p>
<p>转换前:</p>
<pre><code>Data columns (total 2 columns):
# Column Non-Null Count Dtype
- -
0 A 1000000 non-null object
1 B 1000000 non-null object
dtypes: object(2)
memory usage: 22.9+ MB
%%timeit
df['C'] = np.where(df.B.eq(df.A.map(countries_dict)), True, False)
63.6 ms ± 499 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
</code></pre>
<p>将列转换为类别后:</p>
<pre><code>Data columns (total 2 columns):
# Column Non-Null Count Dtype
- -
0 A 1000000 non-null category
1 B 1000000 non-null category
dtypes: category(2)
memory usage: 9.5 MB
%%timeit
df['C'] = np.where(df.B.eq(df.A.map(countries_dict)), True, False)
3.07 ms ± 47.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
</code></pre>