[英]Why doesn't this Python pandas code work on my dataset?
您的第一次尝试相当于submit[submit['score'] < 0]['score'] = 0
。 每当您在 pandas 代码中看到多个[
和]
对时,这可能是一个不好的迹象。 在这种情况下,使用submit[submit['score'] < 0]
您正在创建数据框的副本,因此您基本上将0
分配给该副本上的score
列,这不会做任何事情。
通过使用loc
,您可以消除副本并直接分配给数据框。
使用.loc
很好,就像兄弟回答说的那样。
有时,更好的是使用链接操作来创建新对象,而不是就地改变另一个对象。 这导致代码易于阅读和遵循。
我建议如下:
submit = submit.assign(score=submit.score.clip(0, None))
它仍然只是一行,但它创建了一个新的数据框,替换了score
列。 .clip()
方法用于将值钳制在一个区间内,在这种情况下,任何小于 0 的值都将为零。
这种风格可以很容易地在链中添加更多操作(在其他地方看到的风格)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.