擅长:python、mysql、java
<p>您需要对每一行应用一个函数,并返回一个新列及其结果。这种操作可以与<code>.apply()</code>方法一起应用,简单的<code>=</code>属性不会起作用。按照您的准则,解决方案是:</p>
<pre><code>df = pd.DataFrame({'Name': ['Marcus Livius Drussus',
'Lucius Cornelius Sulla',
'Gaius Julius Caesar']})
df['Abrev'] = df.Name.apply(lambda x: "".join([y[0] for y in (x.split())]))
</code></pre>
<p>它产生了</p>
^{pr2}$
<p><strong>编辑:</strong></p>
<p>我将它与另一个解决方案进行了比较,认为带有<code>join()</code>的{<cd3>}方法将非常慢。我惊讶地发现它实际上更快。设置:</p>
<pre><code>N = 3000000
bank = pd.util.testing.rands_array(3,N)
vec = [bank[3*i] + ' ' + bank[3*i+1] + ' ' + bank[3*i+2] for i in range(N/3)]
df = pd.DataFrame({'Name': vec})
</code></pre>
<p>我发现:</p>
^{4}$