2017-10-21 91 views
1

我有一个类Asset需要一个名称(应该用引号输入)。 这将工作正常:Apple = Asset ('AAPL') 我想要将所有数据框列转换为资产对象。我试着下面的代码,但不起作用:将列转换为类对象

for column in df.columns: 
    column = Asset (column) 

我也尝试了与df.columns转换成字符串列表相同的东西。

编辑 我的目标是为与列具有相同名称的每个列创建一个对象。这样,对象就会自动拥有价格等栏目的内容。该类被定义为:

class Asset: 
    def __init__(self, name): 
     self.name = name 
     self.price = df[name] 
     self.pct = self.price.pct_change() 
+0

它的工作原理好吧,它只是不做你想要的。 –

+0

请更新您的问题,并解释您的意思是“它不工作”。 – Soviut

回答

3

重新分配columns只是意味着你正在改变的变量引用,这并不意味着原来的df.columns将被更新的对象。

我建议使用列表中理解和分配结果返回:

df.columns = [Asset(x) for x in df.columns] 

根据您的编辑,

asset = [Asset(x) for x in df.columns] 

或者,

asset = {x : Asset(x) for x in df.columns} 
+0

谢谢,但我认为我不清楚。你会看到编辑? – st19297

+0

@ st19297为什么'assets = [[df.columns中的x的资产(x)]'工作? –

+0

它会工作,但给我一个对象列表。我怎样才能在名称空间而不是列表中的单个对象?对不起,我是一个编码初学者 – st19297