起因是因为想把一列数据赋给dataframe作为一个新列,所以产生如下代码:
df['ret'] = df[fund].pct_change()
于是按照这个warning的指示我又尝试了以下:
df.loc[:,'ret'] = df[fund_name].pct_change()
df.loc[:,'ret'] = df.loc[:,fund_name].pct_change()
df.loc[:,'ret'] = df.loc[:,fund_name].copy().pct_change()
后来搜了很多解答发现,这是因为警告尽量避免链式赋值:
pandas DataFrame避免链式赋值 - 悦光阴 - 博客园 (cnblogs.com)
最后使用拼接的方法实现并且解决warning,也就是避免了链式复制吧:
ret= df[fund_name].pct_change()
ret.name = "ret"
df = pd.concat([df,ret],axis = 1)