gpt4 book ai didi

python - 对 .apply 和 lambda 的用法感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:53 24 4
gpt4 key购买 nike

遇到这段代码后: enter image description here

我对 .applylambda 的用法感到困惑。首先,.apply 是否将所需的更改应用到指定的所有列中的所有元素或逐个列中的所有元素?其次,x in lambda x: 是否分别遍历指定列或列中的每个元素?第三,x.minx.max 是否分别给出了指定列中所有元素的最小值或最大值,或者分别给出了每列的最小值和最大值?任何解释整个过程的答案都会让我非常感激。
谢谢。

最佳答案

我认为这是最好的避免 apply - 在引擎盖下循环并按 list 中的列使用 DataFrame 的子集:

df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')})

print (df)

c = ['B','C','D']

所以首先选择所选列的最小值和类似的最大值:

print (df[c].min())
B 4
C 2
D 0
dtype: int64

然后减法和除法:

print ((df[c] - df[c].min()))
B C D
0 0 5 1
1 1 6 3
2 0 7 5
3 1 2 7
4 1 0 1
5 0 1 0

print (df[c].max() - df[c].min())
B 1
C 7
D 7
dtype: int64

df[c] = (df[c] - df[c].min()) / (df[c].max() - df[c].min())
print (df)
A B C D E F
0 a 0.0 0.714286 0.142857 5 a
1 b 1.0 0.857143 0.428571 3 a
2 c 0.0 1.000000 0.714286 6 a
3 d 1.0 0.285714 1.000000 9 b
4 e 1.0 0.000000 0.142857 2 b
5 f 0.0 0.142857 0.000000 4 b

编辑:

调试 apply 最好创建自定义函数:

def f(x):
#for each loop return column
print (x)
#return scalar - min
print (x.min())
#return new Series - column
print ((x-x.min())/ (x.max() - x.min()))
return (x-x.min())/ (x.max() - x.min())

df[c] = df[c].apply(f)
print (df)

关于python - 对 .apply 和 lambda 的用法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49211337/

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