为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

POPMUISE 2020-02-04 16:10:12
我想pandas通过将函数应用于两个现有列在数据框中创建一个新列。按照这个答案,当我只需要一个列作为参数时,我已经能够创建一个新列:import pandas as pddf = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})def fx(x):    return x * xprint(df)df['newcolumn'] = df.A.apply(fx)print(df)但是,当函数需要多个参数时,我无法弄清楚该怎么做。例如,如何通过将A列和B列传递给下面的函数来创建新列?def fxy(x, y):    return x * y
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

另外,您可以使用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_column

0  10  20         200

1  20  30         600

2  30  10         300

或一般情况下向量化任意函数:


>>> def fx(x, y):

...     return x*y

...

>>> df['new_column'] = np.vectorize(fx)(df['A'], df['B'])

>>> df

    A   B  new_column

0  10  20         200

1  20  30         600

2  30  10         300


查看完整回答
反对 回复 2020-02-04
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

如果可以重写函数,则可以使用@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  newcolumn

0  10  20        200

1  20  30        600

2  30  10        300


查看完整回答
反对 回复 2020-02-04
?
函数式编程

TA贡献1807条经验 获得超9个赞

这样可以解决问题:


df['newcolumn'] = df.A * df.B

您也可以这样做:


def fab(row):

  return row['A'] * row['B']


df['newcolumn'] = df.apply(fab, axis=1)


查看完整回答
反对 回复 2020-02-04
  • 3 回答
  • 0 关注
  • 572 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信