【发布时间】:2017-07-16 06:07:14
【问题描述】:
在将我的 DataFrame 与另一个 DataFrame 合并后,我尝试更改其值并遇到一些问题(在合并之前似乎不是问题)。
我正在索引和更改我的 DataFrame 中的值:
df.iloc[0]['column'] = 1
随后,我使用合并沿两个索引加入(左外连接)(我意识到 left.join(right) 也可以)。之后,当我使用 iloc 执行相同的值分配时,我收到以下警告:
__main__:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
对链接文档的审查并没有阐明理解,因此,我是否使用了不正确的 iloc 切片方法? (请记住,出于代码的目的,我需要基于位置的切片)
我注意到 df.ix[0,'column'] = 1 有效,同样基于this page 我可以使用 df.columns.get_loc('column') 引用列位置,但表面上这似乎不必要的复杂。
这些方法在底层有什么区别,合并会导致之前的方法 (df.iloc[0]['column']) 中断怎么办?
【问题讨论】:
-
有类似的问题。确实看到了,不高兴,我的目的是更新值,而不是创建数据框的副本并保持原样。另外:我的 .iloc 来自 grp_kfold.split,所以我只有数字,不能做 df.A=x