多指数分配,同时避免SettingWithCopyWarning

时间:2015-08-05 12:10:43

标签: python pandas warnings

此代码有效,但会生成SettingWithCopyWarning。由于警告可能有用,我宁愿不要全局关闭它。在其他情况下,我已经找到了实现相同结果的方法,但没有触发警告,但我想不出这里的替代方案:

# df does not yet have a ColZ
# df is indexed by Date and Name (which is not use here)
df["ColZ"] = 0.0
Z = df.xs(myDate, level="Date", drop_level=False)["ColZ"]
Z[:36] = 99.0
df.loc[(myDate,), ("ColZ",)] = Z

我不能截取横截面(xs)然后分配到新列,因为横截面将给我一个副本。我不能只为我想要设置为99的单元格划分横截面,因为我需要按索引和行切片,所以我需要一个iloc和loc的混合。一种可能性是重置索引以降低名称级别,然后再将其重新放回,但这看起来很难吃。

有任何建议,还是我只是接受警告?

1 个答案:

答案 0 :(得分:0)

您可以通过以下代码禁用警告:

with pd.option_context('mode.chained_assignment',None):
    you code here