擅长:python、mysql、java
<p>我认为您的解决方案是好的,因为pandas<code>.str</code>函数也使用循环(并处理缺少的值),所以有时会比较慢</p>
<p>我对解决方案进行了一些小的修改-将元组解包为变量<code>t</code>和<code>v</code>,在测试数据中,解包速度更快一些:</p>
<pre><code>np.random.seed(2020)
N = 10000
s1 = pd.Series(np.random.choice(list(string.ascii_letters), size=N))
s2 = pd.DataFrame(np.random.choice(list(string.ascii_letters), size=(N, 3))).sum(axis=1)
In [82]: %timeit (pd.Series([t[0] in t[1] for t in zip(s1, s2)], index=s1.index))
3.47 ms ± 271 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [83]: %timeit (pd.Series([t in v for t, v in zip(s1, s2)], index=s1.index))
2.89 ms ± 130 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
</code></pre>