我有以下 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 函数内部计算每行最大值的方法。有人有想法吗?
提前致谢 !
最佳答案
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/