带有整数标签的Pandas MultiIndex

时间:2013-10-23 17:45:07

标签: python pandas

我有一个MultiIndex,其中一些级别用字符串标记,其他级别用整数:

import pandas as pd
metrics = ['PT', 'TF', 'AF']
n_replicates = 3
n_nodes = 6
cols = [(r,m,n) for r in range(n_replicates) for m in metrics for n in range(n_nodes)]
cols = pd.MultiIndex.from_tuples(cols,names = ['Replicates', 'Metrics', 'Nodes'])

ind = range(5)
df = pd.DataFrame(columns=cols, index=ind)
df.sortlevel(level=0, axis=1, inplace=True)

如果我想选择带有整数标签的单个列,没问题:

df[2,'AF',10]

如果我尝试选择范围,但是:

df[1:4,'AF',10]
TypeError: 
(No message given)

如果我遗漏了最后一级,我会收到一个不同的错误:

df.sortlevel(level=0,axis=1,inplace=True)
df[1:4,'AF']
TypeError: unhashable type

我怀疑当我使用整数作为列标签时,我正在玩火。简单地将它们全部作为字符串的“安全”路线是什么?或者是否有其他方法使用整数标签索引MuliIndex数据帧?

编辑: 现在我很清楚我应该使用.loc。好。但是,我仍然不清楚与MultiIndex的较低级别进行交互。

df.loc[:,:] #Good
df.loc[:,1:2] #Good
df.loc[:,[1:2, 'AF']]
SyntaxError: invalid syntax
df.loc[:,1:2].xs('AF', level='Metrics', axis=1) #Good

最后一行是我需要使用的吗?如果是的话,很好。它足够长,让我觉得我对一种更好的方式一无所知。谢谢你的帮助!

0 个答案:

没有答案