簡體   English   中英

替換滿足某些條件的 Pandas 列中的值會導致 SettingWithCopyWarning

[英]Replace values in a pandas column that satisfy some condition leads to SettingWithCopyWarning

dtrain的類型為<class 'pandas.core.frame.DataFrame'>

執行以下操作的正確方法是什么?

target = dtrain.iloc[:,1] > 0
dtrain.ix[target, 1] = 0

我收到警告:

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/indexing.py:477: SettingWithCopyWarning: 正試圖在副本上設置一個值來自 DataFrame 的切片。 嘗試使用 .loc[row_indexer,col_indexer] = value 代替

注意:之前我創建dtrain使用

dtrain = d.loc[(d.yyyy < 2005) & (d.yyyy >= 1995),:]

這可能是一個 n00b 問題。 我對 Python 相當陌生,並且在我的腦海中還沒有一個好的模型來說明什么觸發了深度復制以及什么只是一個指針......

我認為首先可以簡化代碼:

dtrain = d.loc[(d.yyyy < 2005) & (d.yyyy >= 1995),:]

到:

dtrain = d[(d.yyyy < 2005) & (d.yyyy >= 1995)]

它被稱為boolean indexing

然后添加copy -請參閱文檔

dtrain = d[(d.yyyy < 2005) & (d.yyyy >= 1995)].copy()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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