gpt4 book ai didi

python - 使用带有 lambda 函数的 DataFrame.apply 将返回的元组/列表分配给多个列

转载 作者:行者123 更新时间:2023-11-28 16:24:48 26 4
gpt4 key购买 nike

我有一个函数接受单个输入并返回两个值的列表

def my_func(x):
return [x+1, x+2]

假设我有一个简单的数据框

df = pd.DataFrame({'x':[1,2,3,4,5]})

我想将 my_func 应用于列 'x' 的每个值,然后将返回值分别保存在列 'y' 和列 'z' 中,例如:

(df['y'], df['z']) = df.apply(lambda row: my_func(row.x), axis = 1)

显然这行不通..

解决这个问题的最佳方法是什么?

编辑:正如@Andy Hayden 在下面指出的那样,在这种情况下我可以简单地使用

df['y'], df['z'] = myfunc(df.x)

那是因为 myfunc 在这里做了一个非常简单的矢量计算。如果更复杂怎么办?

dict = {1:'a', 2:'b', 3:'c', 4:'d', 5:'e', 6:'f'}
def my_func(x):
return [dict[x], dict[x+1]]

所以在这里,dict[x] 不能再对整个系列起作用,我想我将不得不使用 apply ?再一次,如何将结果放入数据框的两个单独的列中

最佳答案

我认为你不需要在这里申请:

In [11]: df["y"], df["z"] = my_func(df.x)

In [12]: df
Out[12]:
x y z
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7

关于python - 使用带有 lambda 函数的 DataFrame.apply 将返回的元组/列表分配给多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37467001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com