具有相关数据帧d的多索引或groupby

2024-10-03 02:34:59 发布

您现在位置:Python中文网/ 问答频道 /正文

下图显示了一个多索引,我正在尝试对数据执行类似的操作:

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派生出来的,我想用另一种方法通过A/B相关的索引/groupby或类似的方法来调用onetwo,就像上面第一个例子中bar可以调用的那样

我把这个例子放在一起,并希望有一些明显的方法来做到这一点,我错过了,因为我正在与此斗争

enter image description here


Tags: columns数据方法namedfindexnplist
1条回答
网友
1楼 · 发布于 2024-10-03 02:34:59

我不明白你到底想要什么。如果您只想添加一个多索引,如您的示例中所示,您可以这样做

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  ...   

相关问题 更多 >