具有相关数据帧数据的多索引或组合

时间:2016-12-04 20:51:00

标签: python pandas

下图显示了一个多索引,我正在尝试与我的数据做类似的事情:

mutiindex

为了演示我尝试用我的真实数据做什么,我把这个简化的虚拟数据放在一起来重现它。

df = pd.DataFrame(np.random.randn(12, 3), columns=['A', 'B', 'C'])
cols = list(df.columns)
colsComb = list(combinations(cols, 2))
colsComb
[('A', 'B'), ('A', 'C'), ('B', 'C')]
#create new columns with pairs of 
newcols = []
for row in colsComb:
    a,b = row
    name = str(a+ '/' + b)
    df[name] = pd.Series(np.nan, index=df.index,)
    df[name] = abs(df[a] - df[b])
    newcols.append(name)

因此,由于我的A/B数据来自AB,我希望采用另一种方式通过{{1}来回忆AB在上面的第一个示例中,A/Bone可以通过two调用相关的索引/ groupby或类似内容。

我把这个例子放在一起,希望有一些明显的方法可以解决这个问题,因为我正在努力解决这个问题。

enter image description here

1 个答案:

答案 0 :(得分:1)

我无法理解你想要什么。如果您只想添加多索引,就像在您的示例中一样,您可以执行此操作

In [1]: newlevel = ['bar', 'bar', 'foo']
        df.columns = pd.MultiIndex.from_arrays([newlevel, df.columns])

In [2]: print df.T      
                   0         1         2         3         4     ...
        bar A -0.137985 -1.163524  0.276460 -0.417816 -0.353671  ... 
            B -0.365237 -1.204439  0.062629 -0.779051 -1.177906  ...  
        foo C  0.085098 -1.357175  0.825194  1.211555  0.027403  ...