gpt4 book ai didi

python - 在 Pandas 中创建新列的 np.where() 问题(可能是 NaN 问题?)

转载 作者:行者123 更新时间:2023-11-30 22:15:50 24 4
gpt4 key购买 nike

我有一个包含 2 列的数据框,我想根据两列之间的比较创建第三列。

所以逻辑是:第 1 列 val = 3,第 2 列 val = 4,因此新列值什么都没有

第 1 列 val = 3,第 2 列 val = 2,因此新列为 3

这与之前提出的问题非常相似,但使用 np.where() 的答案对我不起作用

这是我尝试过的:

FinalDF['c'] = np.where(FinalDF['a']>FinalDF['b'],[FinalDF['a'],""])

在那次失败之后,我试图看看它是否不喜欢我给它的 [x,y],所以我尝试了:

FinalDF['c'] = np.where(FinalDF['a']>FinalDF['b'],[1,0])

结果总是:

ValueError: either both or neither of x and y should be given

编辑:我还删除了 [x,y],看看会发生什么,因为 problem 说它是可选的。但我仍然收到错误:

ValueError: Length of values does not match length of index

这很奇怪,因为它们位于同一个数据框中,尽管一列确实有一些 Nan 值。

我认为我不能 documentation 因为我这里有条件。我已链接到之前的问题,以便读者可以在以后的问题中引用它们。

感谢您的帮助。

最佳答案

我认为这应该有效:

FinalDF['c'] = np.where(FinalDF['a']>FinalDF['b'], FinalDF['a'],"")

示例:

FinalDF = pd.DataFrame({'a':[4,2,4,5,5,4],
'b':[4,3,2,2,2,4],
})
print FinalDF
a b
0 4 4
1 2 3
2 4 2
3 5 2
4 5 2
5 4 4

输出:

   a  b  c
0 4 4
1 2 3
2 4 2 4
3 5 2 5
4 5 2 5
5 4 4

或者如果b列必须具有比a列更大的值,请使用:

FinalDF['c'] = np.where(FinalDF['a']<FinalDF['b'], FinalDF['b'],"")

输出:

   a  b  c
0 4 4
1 2 3 3
2 4 2
3 5 2
4 5 2
5 4 4

关于python - 在 Pandas 中创建新列的 np.where() 问题(可能是 NaN 问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50170744/

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