路明非的小跟班 2021-03-24 14:39 采纳率: 71.4%
浏览 55
已采纳

python中pandas发生Stringwithcopywarning

原代码

import numpy as np
import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9]]
dataframe=pd.DataFrame(data,index=['a','b','c'],columns=['one','two','three'])
print(dataframe)#创建数据对象
x=dataframe['two']>2#筛选第1列(存在第0列概念情况下)中值大于2的所有行数据
data1=dataframe.loc[x]
print(data1)
data1['four']=10
print(data1)#为data1添加一列数据,列索引为‘four’,值都为10
data1[data1>=9]=8#将data1中大于九的数据修改为8
print(data1)

然后会发生Stringwithcopywarning错误

经过修改后现代码

import numpy as np
import pandas as pd
data=[[1,2,3],[4,5,6],[7,8,9]]
dataframe=pd.DataFrame(data,index=['a','b','c'],columns=['one','two','three'])
print(dataframe)#创建数据对象
x=dataframe['two']>2,['one','two','three']#筛选第1列(存在第0列概念情况下)中值大于2的所有行数据
data1=dataframe.loc[x]
print(data1)
data1['four']=10
print(data1)#为data1添加一列数据,列索引为‘four’,值都为10
data1[data1>=9]=8#将data1中大于九的数据修改为8
print(data1)

在发生错误后我努力修改最后发现在筛选大于2的时候在x=dataframe['two']>2后面加上['one','two','three']也就是列之后错误消失,刚学python不久不太懂,求大佬讲解一下为什么会这样??拜托了

  • 写回答

3条回答 默认 最新

  • 关注

    Stringwithcopywarning  这一句并不是报错, 只是一个警告, 程序还是可以运行的. 

    如果不想预警提示呢, 可以先运行下面这2句

    import warnings
    warnings.filterwarnings('ignore')

    出现这个预警你因为你用着这一句

    data1['four']=10

    他建议的写法是

    df.loc[row_indexer,col_indexer] = value instead

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵