![](/img/trans.png)
[英]Changing some values in a row of pd.DataFrame leads to SettingWithCopyWarning pandas python
[英]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
。
dtrain = d[(d.yyyy < 2005) & (d.yyyy >= 1995)].copy()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.