我想在pandas
数据框中创建一个新列,方法是对两个现有列应用一个函数。在answer之后,我已经能够在只需要一个列作为参数时创建一个新列:
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
7条答案
按热度按时间ozxc1zmp1#
如果你可以重写你的函数,你可以使用@greenAfrican示例。但是如果你不想重写你的函数,你可以把它 Package 到apply内部的匿名函数中,像这样:
qyuhtwio2#
或者,你可以使用numpy底层函数:
或矢量化任意函数一般情况下:
9cbw7uwe3#
这解决了问题:
您还可以执行以下操作:
gg0vcinb4#
如果需要***一次创建多列***:
1.创建dataframe:
1.创建函数:
1.分配新列:
xzlaal3s5#
多一个dict样式的干净语法:
或者,
jum4pzuy6#
这将动态地给予你想要的结果。即使你有两个以上的参数,它也能工作
dba5bblo7#
答案集中在以dataframe的列作为输入的函数上。更一般地说,如果你想在一个有多个参数的函数上使用pandas
.apply
,其中一些可能不是列,那么你可以在.apply()
调用中将它们指定为关键字参数: