gpt4 book ai didi

python - 如何仅使用返回多个值的函数的一个特定输出来操作列条目?

转载 作者:行者123 更新时间:2023-11-28 21:32:14 25 4
gpt4 key购买 nike

我有一个像这样的数据框:

import numpy as np
import pandas as pd

df = pd.DataFrame({'a': range(4), 'b': range(2, 6)})

a b
0 0 2
1 1 3
2 2 4
3 3 5

我有一个返回多个值的函数。在这里,我只使用一个虚拟函数,它返回特定输入可迭代的最小值和最大值:

def return_min_max(x):
return (np.min(x), np.max(x))

现在我想要例如将每列的最大值添加到相应列中的每个值。

所以

df.apply(return_min_max)

给出

a    (0, 3)
b (2, 5)

然后

df.add(df.apply(return_min_max).apply(lambda x: x[1]))

产生期望的结果

   a   b
0 3 7
1 4 8
2 5 9
3 6 10

我想知道是否有一种更直接的方法可以避免两个链接的apply

只是为了确保:

我对一个不感兴趣

df.add(df.max())

类型解决方案。我突出显示了 dummy_function 来说明这不是我的实际函数,而只是作为具有多个输出的最小示例函数。

最佳答案

再看一下,您的 return_min_max 是一个列函数。所以情况并没有那么糟糕。你可以这样做,例如:

# create a dataframe for easy access
ret_df = pd.DataFrame(df.apply(return_min_max).to_dict())
# a b
# 0 0 2
# 1 3 5

# add
df.add(ret_df.loc[1], axis=1)

输出:

   a   b
0 3 7
1 4 8
2 5 9
3 6 10

和 numpy 广播:

df.values[None,:] + ret_df.values[:,None]

给出:

array([[[ 0,  4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],

[[ 3, 7],
[ 4, 8],
[ 5, 9],
[ 6, 10]]], dtype=int64)

关于python - 如何仅使用返回多个值的函数的一个特定输出来操作列条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56891370/

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