Python 带整数标签的多索引
我有一个多重索引,有些级别用字符串标记,有些级别用整数标记:Python 带整数标签的多索引,python,pandas,Python,Pandas,我有一个多重索引,有些级别用字符串标记,有些级别用整数标记: 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 = ['Replic
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
当我使用整数作为列标签时,我怀疑我在玩火。将它们全部作为字符串使用是否“安全”呢?或者是否有其他方法使用整数标签索引多索引数据帧
编辑:
现在我很清楚我应该使用.loc。好。然而,我仍然不清楚如何与较低级别的多索引进行交互
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
最后一行就是我要用的吗?如果是的话,很好。它足够长,让我觉得我不知道更好的方法。谢谢你的帮助 您是否尝试过使用df.loc?请发布一个完整的输入示例(例如df),以及您对输出的期望;您需要使用
.loc