此代码有效,但会生成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的混合。一种可能性是重置索引以降低名称级别,然后再将其重新放回,但这看起来很难吃。
有任何建议,还是我只是接受警告?
答案 0 :(得分:0)
您可以通过以下代码禁用警告:
with pd.option_context('mode.chained_assignment',None):
you code here