- 我应该真的关心警告吗?
这取决于。在您的示例中,您首先引用数据的一个子集(df.loc[555]
),然后在该子集上设置值。几乎总是熊猫使原始数据的copy
和副本上的设置值不会修改原始数据帧,因此警告。
在某些情况下,大熊猫会创建原始数据的view
(例如:如果所有列都具有相同的dtype),则此处的设置值将按预期工作。
如果数据框中的所有列都具有相同的dtype(例如:所有浮点数),并且您在单个现有索引上使用iloc
,那么您将获得一个视图并且可以忽略该警告。如果您正在设置一个不存在的索引,则表示您是Setting with enlargment,这也是预期的行为,警告也可以忽略。
- 什么是推荐的方法去做到这一点,使警告不会弹出?
您使用的df.loc
给你提供的信息似乎好。你有几种选择,以避免警告:
首先,更新您的熊猫版本。这些误报警的情况在每个版本都有所改进,我在0.15.1中没有收到任何信息。
其次,如果你确信你在做什么是预期的行为,那么你可以只用沉默全球警告:
pd.set_option('chained_assignment', None)
最后,在某些情况下,你可以设置你造成的is_copy
财产对象有效地禁用这个检查对象上,例如:
df_temp = df.loc[555]
df_temp.is_copy = False
注意,这个最后的选择只能在现有的索引使用,在新的索引这就提出了一个KeyError
。
输入数据和预期输出的任何示例都是有用的。 – Marcin 2014-12-08 00:42:48
感觉像一个很好的答案是没有这个提供。 – user3659451 2014-12-08 18:39:37