擅长:python、mysql、java
<p>您可以通过解压和重新打包myFunc()的结果来实现这一点(另请注意,如果已经有myFunc可用,则不需要lambda):</p>
<pre><code>myDF['square'],myDF['cubed'],myDF['fourth'] = zip(*myDF['value'].map(myFunc))
</code></pre>
<p>使用<code>zip(*arg)</code>是交换元组集合方向的标准技巧。<code>*</code>将结果中的每一行转换为<code>zip()</code>函数的参数。然后<code>zip()</code>将每个参数的第一个元素组合到一个列表中(第一列),然后将第二个元素组合到另一个列表中,依此类推</p>
<p>或者,可以批量创建列,然后按元组分配:</p>
^{pr2}$
<p>通常,为了可读性,我会这样做:</p>
<pre><code>myDF = pd.DataFrame(
dict(
value=myDF['value'],
square=myDF['value'] ** 2,
cube=myDF['value'] ** 3,
fourth=myDF['value'] ** 4
),
columns=['value', 'square', 'cube', 'fourth'] # set column order
)
</code></pre>
<p>但真的很难战胜这一点:</p>
<pre><code>myDF['square'] = myDF['value'] ** 2
myDF['cube'] = myDF['value'] ** 3
myDF['fourth'] = myDF['value'] ** 4
</code></pre>
<p>这是一个“pythonic”解决方案,因为它简单、易读、易于调试和高效(也就是说,它很好地利用了pandas的内置功能)。在</p>