首页 > 解决方案 > 无法消除熊猫 SettingWithCopyWarning

问题描述

我尝试了很多次,但是当在“ipcaMomSlice”上插入“乘数”列时,我无法在代码中避免这个警告。任何想法?

import pandas as pd

ipcaMom = bcbQuery(433)
ipcaMom['valor'] /= 100

initDate = "1995-01-01"

ipcaMomSlice = ipcaMom[initDate:]

ipcaMomSlice.loc[:,'multiplier'] = (1 + ipcaMomSlice['valor']).cumprod()

标签: pythonpandas

解决方案


如果您希望这ipcaMomSlice是它自己的实体,而不是回溯ipcaMom(例如,您根本不想分配“乘数”列ipcaMom,而只想要“乘数” ipcaMomSlice),您需要告诉熊猫ipcaMomSlice不再只是数据帧的一部分,而是一个完整的独立子集。这是通过.copy()方法完成的。

import pandas as pd

ipcaMom = bcbQuery(433)
ipcaMom['valor'] /= 100

initDate = "1995-01-01"

ipcaMomSlice = ipcaMom[initDate:].copy()

# no need for `.loc` in this assignment operation
ipcaMomSlice['multiplier'] = (1 + ipcaMomSlice['valor']).cumprod()

但是,如果您希望“乘数”神奇地显示为列,则ipcaMom需要将您的索引从您的.loc

import pandas as pd

ipcaMom = bcbQuery(433)
ipcaMom['valor'] /= 100

initDate = "1995-01-01"
ipcaMom.loc[initdate:, 'multiplier'] = (1 + ipcaMom.loc[initdate:, 'valor']).cumprod()

推荐阅读