路明非的小跟班 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 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题