gpt4 book ai didi

python - Pandas - 在每一列上应用一个返回多个值的函数

转载 作者:行者123 更新时间:2023-11-28 21:38:06 24 4
gpt4 key购买 nike

我有一个数据框

>>>df = pd.DataFrame({"a" : [1,2,3], "b" :[4,5,6], "c":[10,11,12]})
a b c
0 1 4 10
1 2 5 11
2 3 6 12

和一个返回多个值的函数。

>>>def my_fun(values):
>>> return(values+10, values*3)

它适用于单个列:

>>>res_1, res_2 = my_fun(df['a'])
>>>print(res_1)

0 3
1 6
2 9

>>>print(res_2)

0 11
1 12
2 13

但是,当我尝试使用 apply 获取两个数据帧时,出现错误。

>>>res_1, res_2 = df.apply(my_fun, axis=0)

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-173-142501cd22f6> in <module>()
23 # return(values_2+10, values_2*3)
24
---> 25 res_1, res_2 = df.apply(my_fun, axis=0)

ValueError: too many values to unpack (expected 2)

有什么线索吗?请注意,这只是一个说明性示例。


更新:

我真正的目标是按列应用函数而不是其他解决方法(因为这个例子只是说明性的)。上面提供的示例不明确,更好的示例如下,我想在其中添加每列的平均值:

>>>import numpy as np
>>>def my_fun_2(values):
>>> return(values+np.mean(values), values*3)

最佳答案

看起来你只需要像这样调用函数

df1,df2=my_fun(df)
df1
Out[1455]:
a b c
0 11 14 20
1 12 15 21
2 13 16 22
df2
Out[1456]:
a b c
0 3 12 30
1 6 15 33
2 9 18 36

您的函数返回值的方式目前不适合与 apply 一起使用。

关于python - Pandas - 在每一列上应用一个返回多个值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672072/

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