gpt4 book ai didi

python - 通过乘法增加特定行,直到列的总和满足条件

转载 作者:行者123 更新时间:2023-12-01 00:48:28 24 4
gpt4 key购买 nike

我有一个包含 4 列的数据框,我想要执行以下步骤(最好在一个代码中):- 过滤 4 列之和低于 0.9 的行- 将每行中的每个单元格相乘,使该行的总和为 0.9- 如果任何单元格中有 0,则该单元格保持不变(因为 0 与任何值相乘仍为 0)- 最后显示所有行,以及未更改的行

这是一个示例数据框:

df = pd.DataFrame({'A':[0.03, 0.0, 0.7],
'B': [0.1234, 0.4, 0.333],
'C': [0.5, 0.4, 0.0333]})


print (df)
Name A B C
0 Bread 0.03 0.1234 0.5000
1 Butter 0.00 0.4000 0.4000
2 Cheese 0.70 0.3330 0.0333

Sum = df["A"]+df["B"]+df["C"]
print (Sum)

0 0.6534
1 0.8000
2 1.0663

现在只有第 0 行和第 1 行会受到算法的影响

我用过这个,它在这里部分起作用:

df = df4.mul(0.9/df4.sum(axis=1),axis=0)

但我现在知道如何仅处理 A 到 C 列,以及如何首先按总和低于 0.9 的行进行筛选,然后如何再次显示所有行。

所以我想要的结果是这样的:

print (df)
Name A B C
0 Bread 0.0414 0.170292 0.690000
1 Butter 0.0000 0.452000 0.452000
2 Cheese 0.70 0.3330 0.0333

重要的是,所有列(包括产品列)和行都应该仍然存在,并且格式是包含所有行的数据框。我只添加了下面的 sum 函数来查看它们加起来是否为 0.9 或更多。

Sum = df["A"]+df["B"]+df["C"]
print (Sum)

0 0.9
1 0.9
2 1.0663

最佳答案

IIUC

s = df.sum(1)
df.update(df.div(s / .9, axis=0)[s < .9])

df.sum(1)

0 0.9000
1 0.9000
2 1.0663
dtype: float64

关于python - 通过乘法增加特定行,直到列的总和满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56757624/

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