如何选择具有多个条件的行,并在原始数据框中计算一个新列



我需要使用以下代码:

raw_data.loc[(raw_data['PERMNO']==10006)&(raw_data['month']>=50)&(raw_data['month']<=100)]['resi']=raw_data['RET']-raw_data['ewretd']

根据计算列'resi'的条件。

但是我总是收到像

这样的警告D: Anaconda3 lib 网站 ipykernel_launcher.py: 1: SettingWithCopyWarning:试图在来自数据帧的切片副本上设置值。尝试使用。loc[row_indexer,col_indexer] = value代替

请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy"启动IPython内核的入口点。

如何纠正?

尝试添加df.copy:

raw_data = raw_data.copy()
raw_data.loc[(raw_data['PERMNO']==10006)&(raw_data['month']>=50)&(raw_data['month']<=100), 'resi'] = raw_data['RET'] - raw_data['ewretd']

相关内容

最新更新