在不修改原始数据的情况下使用克隆数组数据时出现问题(Python)
我有一个Python入门课程的项目要做,但由于一个问题,我被困在接近尾声的地方 我的问题如下: 我想使用由名为“world”的类的不同属性的值组成的“tdata”数据帧的两倍对其进行更改。(尝试使用当前的指标水平进行一些预测) 我试图通过生成一个新的数据帧“graphdat”来实现这一点,我在函数中使用它来生成一个图形 我的问题是,最后,我的“tdata”数组也被修改了 我尝试使用graphdat=tdata.copy(),但它返回一个AttributeError:“world”对象没有属性“copy” 任何人都知道我怎么能用另一种方式做到这一点 谢谢大家!在不修改原始数据的情况下使用克隆数组数据时出现问题(Python),python,pandas,loops,increment,Python,Pandas,Loops,Increment,我有一个Python入门课程的项目要做,但由于一个问题,我被困在接近尾声的地方 我的问题如下: 我想使用由名为“world”的类的不同属性的值组成的“tdata”数据帧的两倍对其进行更改。(尝试使用当前的指标水平进行一些预测) 我试图通过生成一个新的数据帧“graphdat”来实现这一点,我在函数中使用它来生成一个图形 我的问题是,最后,我的“tdata”数组也被修改了 我尝试使用graphdat=tdata.copy(),但它返回一个AttributeError:“world”对象没有属性“c
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
类的不同实例。由于您有一个用户定义的类,因此需要定义一个方法来克隆实例。