擅长:python、mysql、java
<p>生成错误的原因是<code>str.get</code>需要一个标量索引,而不是索引列表/iterable(它既不理解这种输入,也不知道如何处理它)</p>
<p>在这种情况下,一个<em>列表理解</em>来拯救-</p>
<pre><code>df['column3'] = [i[j - 1] for i, j in zip(df.column1, df.column2)]
df
column1 column2 column3
0 abcdef 2 b
1 gtihj 4 h
2 jiuwq 3 u
</code></pre>
<p>这个问题基本上很难矢量化,因此以C-speed运行的列表理解是一个非常有效的选择</p>
<p>较慢的替代方案包括(为了完整性),<code>apply</code></p>
<pre><code>df['column3'] = df.apply(lambda x: x.column1[x.column2 - 1], 1)
df
column1 column2 column3
0 abcdef 2 b
1 gtihj 4 h
2 jiuwq 3 u
</code></pre>
<p>和<code>np.vectorize</code>:</p>
<pre><code>f = np.vectorize(lambda x, y: x[y - 1])
df['column3'] = f(df.column1, df.column2)
df
column1 column2 column3
0 abcdef 2 b
1 gtihj 4 h
2 jiuwq 3 u
</code></pre>