应用具有多个参数的函数以创建新的pandas列

我想pandas通过将函数应用于两个现有列在数据框中创建一个新列。按照这个答案,当我只需要一个列作为参数时,我已经能够创建一个新列:


import pandas as pd

df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})


def fx(x):

    return x * x


print(df)

df['newcolumn'] = df.A.apply(fx)

print(df)

但是,当函数需要多个参数时,我无法弄清楚该怎么做。例如,如何通过将A列和B列传递给下面的函数来创建新列?


def fxy(x, y):

    return x * y


POPMUISE
浏览 557回答 3
3回答

ibeautiful

另外,您可以使用numpy基础函数:>>> import numpy as np>>> df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})>>> df['new_column'] = np.multiply(df['A'], df['B'])>>> df    A   B  new_column0  10  20         2001  20  30         6002  30  10         300或一般情况下向量化任意函数:>>> def fx(x, y):...     return x*y...>>> df['new_column'] = np.vectorize(fx)(df['A'], df['B'])>>> df    A   B  new_column0  10  20         2001  20  30         6002  30  10         300

一只名叫tom的猫

如果可以重写函数,则可以使用@greenAfrican示例。但是,如果您不想重写函数,可以将其包装到apply内部的匿名函数中,如下所示:>>> def fxy(x, y):...     return x * y>>> df['newcolumn'] = df.apply(lambda x: fxy(x['A'], x['B']), axis=1)>>> df    A   B  newcolumn0  10  20        2001  20  30        6002  30  10        300

函数式编程

这样可以解决问题:df['newcolumn'] = df.A * df.B您也可以这样做:def fab(row):  return row['A'] * row['B']df['newcolumn'] = df.apply(fab, axis=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python