簡體   English   中英

為什么這個 Python 熊貓代碼不能在我的數據集上運行?

[英]Why doesn't this Python pandas code work on my dataset?

我是數據科學的新手,在 Python 中遇到了關於 pandas 的問題。 基本上,我想用 0 替換列中低於 0 的值,我想知道為什么這不起作用:

我的數據集的圖像:數據集:
數據集

原來的:

submit[submit.score<0].score = 0

固定的:

submit.loc[submit.score<0, 'score'] = 0

我已經通過使用 iloc 解決了這個問題,但這真的讓我很困惑。 任何解釋都會很棒。

您的第一次嘗試相當於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM