【问题标题】:Not able to change the value of a data-frame column using Python无法使用 Python 更改数据框列的值
【发布时间】:2021-10-29 01:07:04
【问题描述】:
for ind in data6.index:
    if(data6['Label'][ind]>0):
        data6['Label'][ind]=1
        
data6

我正在尝试将数据框中大于等于 1 的值设置为 1

我得到的错误是:

SettingWithCopyWarning:值为 试图在 DataFrame 中的切片副本上设置

请参阅文档中的注意事项: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy data6['标签'][ind]=1

【问题讨论】:

    标签: python python-3.x pandas dataframe machine-learning


    【解决方案1】:

    成功了

    data6['Label'].values[data6['Label'].values > 0] = 1
    data6
    

    【讨论】:

      【解决方案2】:

      由于您访问 DataFrame 的方式而出现此问题: 我不太了解熊猫的行为,但它有时会返回一个切片作为副本,有时作为数据框本身的一部分。使用 loc 和 iloc 应该可以解决问题:

      import pandas as pd
      base_dict = {'data': [[1,2,3],[3,4,5],[6,7,8]],
                   'Label': [0,4,1]}
      
      data6 = pd.DataFrame(base_dict)
      
      print(data6)
      
      for ind in data6.index:
          if data6.iloc[ind,1] > 0:
              data6.iloc[ind,1] = 1
              
      print(data6)
      

      如果您对发生此错误的原因感兴趣,请阅读有关 pandas 切片在哪些情况下返回的内容。

      【讨论】:

      • 谢谢,虽然我检查了自己并在下面回答了,但效果也很好,请检查一下!!!
      【解决方案3】:

      这对我很有效:

      df.loc[df["label"] > 0] = 1
      

      输入:

      输出:

      【讨论】:

      • 感谢帮助的哥们,我已经在下面回答了,线程上还有一个,请检查一下。
      【解决方案4】:

      试试这个:

      data6.loc[df['Label'] > 0, 'Label'] = 1
      

      最终代码如下:

      data6 = pd.DataFrame({'Label': {0: 0, 1: 0, 2: 0, 3: 3, 4: 3}})
      
      print(data6)
      
      data6.loc[df['Label'] > 0, 'Label'] = 1
      
      print(data6)
      

      输出:

         Label
      0      0
      1      0
      2      0
      3      3
      4      3
         Label
      0      0
      1      0
      2      0
      3      1
      4      1
      

      【讨论】:

        猜你喜欢
        • 2021-01-15
        • 2022-12-12
        • 2022-08-14
        • 1970-01-01
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多