gpt4 book ai didi

python - 在行 Pandas DF 上应用共享功能

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:29 27 4
gpt4 key购买 nike

我有以下 df

Array = np.array([[87, 70, 95],
[52, 47, 44],
[44, 97, 94],
[79, 36, 2]])

df_test = pd.DataFrame(Array, columns=['Apple', 'Banana', 'Tomato'],index=[['Joe', 'Steve', 'Wes', 'Jim']])

看起来像:

       Apple  Banana  Tomato
Joe 87 70 95
Steve 52 47 44
Wes 44 97 94
Jim 79 36 2

我想按行计算每笔费用的份额,但我没有找到。它必须看起来像:

df_test.apply(lambda: x/max(line),axis=2)

结果是:

       Apple  Banana  Tomato
Joe 0.35 0.27 0.37
. . . .

但是我找不到在 lambda 函数中计算每行最大值的方法。有人知道吗?提前致谢 !

最佳答案

你想div通过sum按行:

In [111]:
df_test.div(df_test.sum(axis=1), axis=0) * 100

Out[111]:
Apple Banana Tomato
Joe 0.345238 0.277778 0.376984
Steve 0.363636 0.328671 0.307692
Wes 0.187234 0.412766 0.400000
Jim 0.675214 0.307692 0.017094

如果你想设置精度你可以调用round :

In [112]:
df_test.div(df_test.sum(axis=1), axis=0).round(2)

Out[112]:
Apple Banana Tomato
Joe 0.35 0.28 0.38
Steve 0.36 0.33 0.31
Wes 0.19 0.41 0.40
Jim 0.68 0.31 0.02

关于python - 在行 Pandas DF 上应用共享功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36455151/

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