在不修改原始数据的情况下使用克隆数组数据时出现问题(Python)

在不修改原始数据的情况下使用克隆数组数据时出现问题(Python),python,pandas,loops,increment,Python,Pandas,Loops,Increment,我有一个Python入门课程的项目要做,但由于一个问题,我被困在接近尾声的地方 我的问题如下: 我想使用由名为“world”的类的不同属性的值组成的“tdata”数据帧的两倍对其进行更改。(尝试使用当前的指标水平进行一些预测) 我试图通过生成一个新的数据帧“graphdat”来实现这一点,我在函数中使用它来生成一个图形 我的问题是,最后,我的“tdata”数组也被修改了 我尝试使用graphdat=tdata.copy(),但它返回一个AttributeError:“world”对象没有属性“c

我有一个Python入门课程的项目要做,但由于一个问题,我被困在接近尾声的地方

我的问题如下: 我想使用由名为“world”的类的不同属性的值组成的“tdata”数据帧的两倍对其进行更改。(尝试使用当前的指标水平进行一些预测) 我试图通过生成一个新的数据帧“graphdat”来实现这一点,我在函数中使用它来生成一个图形

我的问题是,最后,我的“tdata”数组也被修改了

我尝试使用graphdat=tdata.copy(),但它返回一个AttributeError:“world”对象没有属性“copy”

任何人都知道我怎么能用另一种方式做到这一点

谢谢大家!

def graph_ppm(self):
        self.price_ppm = 10
        self.budget -= self.price_ppm
        period = tdata.period
        
        graphdat = tdata

        while period < 30:
            period +=1
            graphdat.sup = (graphdat.emit - graphdat.absorb)
            graphdat.ppm += graphdat.sup


            yppm.append(round(graphdat.ppm,2)) 
def图形_ppm(自):
自身价格_ppm=10
self.budget-=self.price\u ppm
period=tdata.period
graphdat=tdata
当周期<30时:
周期+=1
graphdat.sup=(graphdat.emit-graphdat.absolpt)
graphdat.ppm+=graphdat.sup
yppm.append(圆形(图形ppm,2))
编辑:

我想我误解了整个问题。 正如Md Imbesat Hassan Rizvi所建议的,我决定使用graphdat=copy.deepcopy(tdata),但我想多次使用此函数,我确实想将graphdat重新初始化到参数的当前级别和当前期间。 问题是,如果一个用户多次运行此函数,我会得到这种图形:

我的最大周期是30,我想去掉过去的值,创建一个非常新的图表

def graph_temp(self):

    self.price_temp = 10
    self.budget -= self.price_temp
    
    graphdat = copy.deepcopy(tdata)
    period = graphdat.period
    plx.clear_plot()

    while period < 30:
        period +=1
        graphdat.sup = (graphdat.emit - graphdat.absorb)
        graphdat.ppm += graphdat.sup

        if graphdat.ppm <380: 
            graphdat.temperature += graphdat.sup * 0.001
        if graphdat.ppm <400: 
            graphdat.temperature += (graphdat.sup) * 0.001
        if graphdat.ppm <450:
            graphdat.temperature += (graphdat.sup) * 0.005
            graphdat.pop_satisfaction -=1
        else:
            graphdat.temperature += (graphdat.sup) * 0.01


        ytemp.append(round(graphdat.temperature,2)) 

    limittemp = [2]*31
    recomtemp = [1.5]*31

    plx.plot(ytemp, label="Temperatures forecast",line_marker = "•")
    plx.plot(limittemp, label="Catastrophe level",line_marker = "-")
    plx.plot(recomtemp, label="Limit level after period 30",line_marker = "=")
    plx.xlabel('Temperatures')
    plx.ylabel('Period')
    plx.title('Title')
    plx.figsize(50, 25)
    plx.ticks(31, 11)

    return plx.show()
def图形温度(自身):
自身价格=10
自我预算-=自我价格
graphdat=copy.deepcopy(tdata)
period=graphdat.period
plx.clear_plot()
当周期<30时:
周期+=1
graphdat.sup=(graphdat.emit-graphdat.absolpt)
graphdat.ppm+=graphdat.sup

如果graphdat.ppm因为
tdata
似乎是不存在copy属性的自定义类
world
的实例,则可以使用copy模块中的方法对其进行复制:

import copy
graphdat = copy.deepcopy(tdata)

此后,
graphdat
tdata
将是
world
类的不同实例。

由于您有一个用户定义的类,因此需要定义一个方法来克隆实例。