可以从元组列表创建Multiindex。我想知道如何做相反的事情吗?考虑以下多重索引:
MultiIndex(levels=[['N', 'R'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['R', 'S'], ['N', 'R', 'S']],
labels=[[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 2, 2, 2, 2, 1, 0, 1, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 0, 2, 1, 1, 0, 2, 0, 2, 0, 1, 0, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 0, 0, 2, 0, 1, 0, 2, 2, 2, 0, 1, 1, 2, 1, 1, 2, 1, 2, 2, 0, 1, 2, 1, 2, 1, 1, 1], [2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1], [0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 1, 2, 1], [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1], [1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]],
names=['AMP', 'CZ', 'FOX', 'CRO', 'MER', 'GM', 'CIP', 'SXT'])
我想返回一个元组列表,该列表将用于通过DataFrame.loc[]
进行选择,例如[('S', 'S', 'S', 'S', 'S', 'S', 'S, 'S'), ...]
我希望df.index.as_tuples()
可以做的事情,不幸的是不存在。
答案 0 :(得分:5)
df.index.tolist()
或df.index.values
都可以。
答案 1 :(得分:1)
这可以通过调用方法to_native_types()
df.index.to_native_types()
> array([('N', 'N', 'N', 'S', 'N', 'N', 'S', 'N'),
('R', 'S', 'N', 'N', 'N', 'S', 'S', 'S'),
('R', 'S', 'N', 'S', 'N', 'S', 'S', 'S'),
('R', 'S', 'S', 'S', 'N', 'S', 'S', 'S'),
('R', 'S', 'S', 'N', 'S', 'S', 'S', 'S'),
('R', 'S', 'S', 'S', 'S', 'S', 'S', 'S'),
('R', 'S', 'S', 'S', 'S', 'S', 'R', 'S'),
('R', 'S', 'R', 'S', 'S', 'S', 'S', 'S'),
...], dtype=object)
答案 2 :(得分:0)
在熊猫 else if (prec(tokens [i]) < prec(ops.peek()) && !ops.isEmpty() && ops.peek() != "(")
{
...
...
nums.add(outcome); // I highly suggest refactoring this to nums.push due to readability considerations
ops.push(tokens[i]);
}
中可以使用MultiIndex.to_flat_index
:
0.24+
示例:
print (df.index.to_flat_index())