2014-04-11 61 views
0

我有一個數據幀,其中每個值是自定義類的對象,說:如何操作其中每個值都是對象的DataFrame?

dc = {"c1":{"a1":CAppState(1,1), "a2":CAppState(2,4) }, "c2":{"a2":CAppState(2,5), "a3":CAppState(3,32)} } 
df = pd.DataFrame(dc) 

其中CAppState是一個類:

class CAppState(object): 
    def __init__(self, nID, nValue): 
     self.m_nID = nID 
     self.m_nValue = nValue 

我想知道我怎麼能上進行一些常用的操作這個數據框,如:cumsum()或根據CAppState.m_nValue進行排序?

任何建議,將不勝感激。

+0

操作,如'cumsum'將在數據幀的值進行操作。所以如果你想對你的對象進行操作,你可以實現'__add__'等以支持添加,或者你可以創建一個包含'm_nValue'值的新列,並在其上使用'cumsum'。 – BrenBarn

+0

@BrenBarn謝謝,但如果我在自定義類中有多個值,我怎麼能指定在cumsum()中使用哪個值? –

回答

0

沒有內建的方法來做到這一點。你必須從你的對象和cumsum創建一個系列。這可以通過map相當容易地完成。例如:

df.c1.map(lambda x: x.m_nValue).cumsum() 

您還可以使用operator.attrgetter

df.c1.map(operator.attrgetter('m_nValue')).cumsum() 
相關問題