2016-02-02 312 views
2

我有一個在multiindex數據框(例如(a,b))上創建的groupby對象。我可以訪問內部組,使用df.get_group((a,b))。但是,我也希望能夠訪問外部組,如df.get_group((a,))。我可以通過df.xs(key,level)命令間接實現,但這不是解決問題的理想方法。有人可以幫助我嗎?在pandas dataframe groupby object中訪問元組的外層元素

df1.get_group(('specialty finance','mortgage finance')) 
              lasts   prev ticker 
industry   sub_industry          
specialty finance mortgage finance 190.000000 190.649994 dewh 
        mortgage finance 252.699997 253.350006 grhf 
        mortgage finance 1179.800049 1180.050049 hdfc 
        mortgage finance 693.849976 708.450012 ihfl 
        mortgage finance 450.950012 468.250000 lichf 

df1.get_group(('specialty finance',)) 
ValueError: must supply a a same-length tuple to get_group with multiple grouping keys 
+0

你說的內部和外部的羣體是什麼意思? – Parfait

+0

我指的是作爲內部和外部組的元組對。在例子df1.get_group(('特殊金融','抵押貸款'))中,'特殊金融'是外部組,'抵押貸款'是內部組。外部組可以有許多子組,我可以像上面那樣訪問子組,但是如何訪問外部組(將列出所有子組(內部組))。我希望我是有道理的,示例代碼清楚地顯示了我想實現的目標。 –

回答

0

這取決於你的第一groupby()決定了get_group()命名對象。假如您只是行業(外組),您可以輸出到單獨的「專業金融」組運行在原來的多指標數據幀的groupby

df1 = originaldf.groupby(['industry']).get_group('specialty finance') 

或者,您可以用當前的分組繼續iterate通過groupby對象,甚至空調根據您的具體行業分組的所有元素:

dfgrp = originaldf.groupby(['industry','sub_industry']) 

for industry, sub_industry in dfgrp: 
    if 'specialty finance' in industry: 
     print(industry) 
     print(sub_industry)