【问题标题】: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 中讨论类似问题的各种帖子(其中两个如下):

  1. Setting with copy warning

  2. 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)

【问题讨论】:

标签: python pandas


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2022-01-26
    • 2018-11-24
    • 2021-10-16
    • 1970-01-01
    • 2016-04-19
    • 2022-12-31
    相关资源
    最近更新 更多