下图显示了一个多索引,我正在尝试与我的数据做类似的事情:
为了演示我尝试用我的真实数据做什么,我把这个简化的虚拟数据放在一起来重现它。
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
数据来自A
和B
,我希望采用另一种方式通过{{1}来回忆A
和B
在上面的第一个示例中,A/B
和one
可以通过two
调用相关的索引/ groupby或类似内容。
我把这个例子放在一起,希望有一些明显的方法可以解决这个问题,因为我正在努力解决这个问题。
答案 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 ...