如何按pandas中的分层列进行分组?

时间:2015-07-29 18:35:07

标签: python pandas indexing

我有一个带有分层列索引的数据框。现在我想按列['X', 'chromosome']对其进行分组。有没有办法在不改变数据框结构的情况下做到这一点?

import pandas as pd

X =  pd.DataFrame.from_dict( {'chromosome':['chr1', 'chr2', 'chr2', 'chr2'],'start':[1,2,1,4]})
Y = pd.DataFrame.from_dict( {'chromosome':['chr1', 'chr2', 'chr2', 'chr3'],'start':[4,5,6,1]})
df_stats = pd.DataFrame.from_dict( {'pvalue':[ 1e-30, 1e-3, 1e-10, 1e-40],'t-stat':[4.4,5.5,6.6, 7.7]})

dd = {'X': X, 'Y': Y, 'STATS':df_stats}
df_qtls = pd.concat(dd.values(), axis = 1, keys= list(dd.keys()) )
df_qtls 

for n, g in df_qtls.groupby(['X', 'chromosome'], axis=0):
    print(n, g)

导致错误:

...
ValueError: Grouper for 'X' not 1-dimensional

2 个答案:

答案 0 :(得分:6)

对于多级列,请使用;(function($){ var ahref1; $(document).ready(function(){ $(document).on('click', '.entry-content li a', function(e){ e.preventDefault(); ahref1 = $(this).attr('href'); $('#formloader').load('/formhost ' + ahref1); return false; }); }); $(document).ready(function(){ $(document).on('click', '.entry-content #formloader a', function(e){ e.preventDefault(); var ahref2 = $(this).attr('href'); $('#formloader').load(ahref2 + ' ' + ahref1); return false; }); }); })(jQuery); 来访问特定列。

('X', 'chromosome')

答案 1 :(得分:0)

我发现的另一种方式是:

for n, g in df_qtls.groupby(df_qtls[x_pos_cols, 'chromosome'], axis=0):
    print(n)
    print(g)