带有复制警告的熊猫设置
Posted
技术标签:
【中文标题】带有复制警告的熊猫设置【英文标题】:Pandas Setting with copy warning 【发布时间】:2017-11-17 08:20:32 【问题描述】:我正在尝试在 pandas 中切片数据帧并将其保存到另一个数据帧。假设df
是一个现有的数据框,我想将它的某个部分切成df1
。但是,我收到了这个警告:
/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:25: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
我查看了 SO 中讨论类似问题的各种帖子(其中两个如下):
Setting with copy warning
How to deal with SettingWithCopyWarning in Pandas?
通过这些链接,我能够在以下行中找到问题
Years=['2010','2011']
for key in Years:
df1['GG'][key]=df[key][df[key].Consumption_Category=='GG']
然后我改为关注
Years=['2010','2011']
for key in Years:
df1['GG'][key]=df[key].loc[df['2010'].iloc[:,0]=='GG']
并摆脱警告。
但是,当我包含另一行以从该数据框中删除某个列时,我再次收到警告,我无法摆脱。
Years=['2010','2011']
for key in Years:
df1['GG'][key]=df[key].loc[df['2010'].iloc[:,0]=='GG']
df1['GG'][key]=df1['GG'][key].drop(['Consumption_Category'],axis=1,inplace=True)
【问题讨论】:
我把它留给有类似问题的人,因为它有助于更快地找到此类问题:***.com/questions/22373927/get-traceback-of-warnings 【参考方案1】:经过大量研究和阅读 pandas 文档后,我终于找到了问题的答案。我收到的警告是因为我已将 inplace=True
放入 drop() 函数中。所以,我删除了inplace=True
并将结果保存到新的datafrmae 中。现在我没有收到任何警告。
Years=['2010','2011']
for key in Years:
df1['GG'][key]=df[key].loc[df['2010'].iloc[:,0]=='GG']
df1['GG'][key]=df1['GG'][key].drop(['Consumption_Category'],axis=1)
【讨论】:
以上是关于带有复制警告的熊猫设置的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将 NSLayoutAttributeLeading Space 设置为 Superview 并带有一些警告
设置警告框为带有一个密文输入框的样式,并设置输入框键盘为数字键盘;判断密文输入框里的内容,并弹出相应提示
设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。