[英]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.