我想用NaN
替换大于任意数字(本例中为100)的Pandas
数据帧中的值(因为如此大的值表示实验失败)。以前,我用它来替换不需要的值:
sve2_all[sve2_all[' Hgtot ng/l'] > 100] = np.nan
但是,我得到了以下错误:
-c:3: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
C:\Users\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\core\indexing.py:346: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
self.obj[item] = s
从这个StackExchange问题中,似乎有时可以忽略这个警告,但我不能很好地跟踪讨论,以确定这是否适用于我的情况。警告基本上是让我知道我将覆盖我的
DataFrame
中的一些值吗?
编辑:据我所知,一切都按其应有的方式进行。作为后续行动,我的替代价值观的方法是否非标准?有没有更好的方法来替换值?
---这个问题为我解决了---
当我试图转换浮点值时,我犯了那个错误--
我在尝试重置整个数据帧的内容时收到此警告,但无法使用loc
或iloc
解决此问题:
df.loc[:, :] = new_values # SettingWithCopyWarning
df.iloc[:, :] = new_values # SettingWithCopyWarning
但是将ndarray解析为数据解决了这个问题:
df.values[:, :] = new_values # no warnings and desired behavior
正如错误消息中所建议的,您应该使用loc来执行此操作:
sve2_all.loc[sve2_all['Hgtot ng/l'] > 100] = np.nan
此警告用于阻止您修改副本(此处sve2_all[sve2_all['Hgtot ng/l']
当我运行以下代码段时,我得到了臭名昭著的pandas设置WithCopyWarning: 我曾尝试通过添加一个。复制()如下: 不幸的是,我没有得到任何改变的警告。大量的谷歌搜索和StackOverflow并没有让我更进一步地理解语法中的根本错误,或者我是如何无意中链接的。代码似乎运行正常,但我讨厌忽略错误消息,希望它们被证明是无关的。 我非常感谢您对我的代码进行修复,并简单解释为什么会出现这种情
问题内容: 当我运行程序时,Pandas每次都会发出如下“未来警告”。 我得到了味精,但我只是想一次又一次地停止Pandas显示此类味精,是否可以设置任何buildin参数以使Pandas不会弹出“未来警告”? 问题答案: 在github上发现了这个…
试图弄清楚为什么下面的函数返回可怕的...这是我的函数,它打算通过引用修改数据框。 不符合要求的行是
问题内容: 我有两列,将集存储在数据框中。 我想使用快速向量化操作在两列上执行集合并集 但是错误使我无法这样做,因为我在两列中都输入了内容。 有解决这个问题的好方法吗? 问题答案: 对于这些操作,纯Python可能更有效。 如果我们可以使用,则可能会花费一半的时间(继承可能不值得): 时序的DataFrame:
问题内容: 假设我用两列(一个DateTime)和一个(整数)创建了一个熊猫DataFrame 。现在,我想根据第一列()中的值创建一个DatetimeIndex : 一切似乎都正常,除了我打印DataFrame时,它说它具有Int64Index。 我是在做错事还是不正确理解Indeces的概念? 问题答案: 没有就位(除非您通过)。否则一切正确 同样作为参考,在即将到来的0.12版本(下周)中,
查看以下: 问题是它不会在ipython笔记本中按默认值打印所有行,但我必须切片才能查看结果行。即使以下选项也不会更改输出: 有人知道如何显示整个阵列吗?