繁体   English   中英

Pandas:根据列中的值向DataFrame添加新列

[英]Pandas: Add new columns to DataFrame based on values in columns

给定一个像这样的DataFrame:

>>> df
    0   1   2
0   2   3   5
1   3   4   7

和一个返回多个结果的函数,如下所示:

def sumprod(x, y, z):
    return x+y+z, x*y*z

我想添加新列,结果将是:

>>> df
    0   1   2  sum  prod
0   2   3   5   10    30
1   3   4   7   14    84

我已成功使用返回一个结果的函数:

df["sum"] = p.apply(sum, axis=1)

但如果它返回多个结果则不会。

一种方法是通过解压缩数组的转置将DataFrame的列传递给函数:

>>> df['sum'], df['prod'] = sumprod(*df.values.T)
>>> df
   0  1  2  sum  prod
0  2  3  5   10    30
1  3  4  7   14    84

sumprod返回一个列元组,由于Python支持多个赋值,您可以将它们分配给新的列标签,如上所述。

你可以写df['sum'], df['prod'] = sumprod(df[0], df[1], df[2])来得到相同的结果。 这更清楚,如果您需要以特定顺序将列传递给函数,则更为可取。 另一方面,如果你有很多列要传递给函数,那就更加冗长了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM