Jas*_*son 18 python python-2.7 pandas chained-assignment
我想用Pandas
DataFrame
大于任意数字(在这种情况下NaN
为100)的值替换(因为这个值很大,表示实验失败).以前我用它来替换不需要的值:
sve2_all[sve2_all[' Hgtot ng/l'] > 100] = np.nan
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
-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
Run Code Online (Sandbox Code Playgroud)
从这个StackExchange问题来看,似乎有时候这个警告可以被忽略,但我不能很好地跟进讨论,以确定这是否适用于我的情况.这个警告基本上让我知道我会覆盖我的一些价值观DataFrame
吗?
编辑:据我所知,一切都表现得如此.跟进是我取代非标准价值的方法吗?有没有更好的方法来取代价值观?
And*_*den 23
正如错误消息中所建议的那样,您应该使用loc来执行此操作:
sve2_all.loc[sve2_all['Hgtot ng/l'] > 100] = np.nan
Run Code Online (Sandbox Code Playgroud)
该警告是来阻止你修改副本(在这里sve2_all[sve2_all[' Hgtot ng/l'] > 100]
是潜在的副本,如果是则进行任何修改不会改变原有的框架.这可能是因为它正确地工作在某些情况下,但大熊猫不能保证它将工作在所有案件......使用风险自负(考虑自己警告!;)).
归档时间: |
|
查看次数: |
32513 次 |
最近记录: |