gpt4 book ai didi

python - 有条件地分配 DataFrame 中另一列的值

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

我想将数据框中的零值更改为每行最后一列中找到的值。我可以在列或行中使用 for 来解决这个问题,但对我来说它似乎不太Pythonic。

简而言之,我有一个像这样的数据框:

col1 col2 col3 nonzero 
1 2 0 10
1 0 3 20

我想做这样的操作

df[df==0] = df.nonzero

所以我会得到

col1 col2 col3 nonzero 
1 2 10 10
1 20 3 20

但这不起作用,因为 [df==0] 本身就是一个具有 True/False 值的 DataFrame。如何做到这一点?

最佳答案

一种选择是使用 apply 方法,循环数据帧的行并将零替换为该行的最后一个元素:

df.apply(lambda row: row.where(row != 0, row.iat[-1]), axis=1)

enter image description here

您还可以就地修改数据框:

df[df == 0] = (df == 0).mul(df.nonzero, axis=0)

这会产生 df 与上面的结果相同。在此方法中,(df == 0).mul(df.nonzero, axis=0) 创建一个数据帧,其中零条目替换为非零列中的值,其他条目为零;结合 bool 索引和赋值,您可以有条件地修改原始数据框中的零条目:

(df == 0).mul(df.nonzero, axis=0)

enter image description here

关于python - 有条件地分配 DataFrame 中另一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43059835/

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