让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: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
注意:
早些时候我创建了 dtrain
使用
dtrain = d.loc[(d.yyyy < 2005) & (d.yyyy >= 1995),:]
这可能是一个棘手的问题。我对 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()
关于python - 替换 pandas 列中满足某些条件的值会导致SettingWithCopyWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41995611/