python - 替换 pandas 列中满足某些条件的值会导致SettingWithCopyWarning

标签 python python-2.7 pandas

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 .

然后添加 copy -see docs .

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

关于python - 替换 pandas 列中满足某些条件的值会导致SettingWithCopyWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41995611/

相关文章:

pandas - 按顺序标记索引到重复的 DataFrame 索引

python - python的循环问题

python - 在 python 中,将 redis-py 与多处理模块一起使用,为什么每个进程都是不同的 fd?

python - Python 中的同步 - Gevent 多线程环境

python - 在 plotly 折线图上隐藏一条线

python - 使用 Python Pandas 跳过文件中的某些行

python - 在Python中执行cURLs命令行

python - 在 Windows 7 上安装 SciPy 时遇到问题

python - 为什么 matplotlib 不绘图?

python - 一个或多个输入行的 numpy.loadtxt