Python - 每列具有多个名称的Pandas Dataframe

时间:2017-03-29 20:26:59

标签: python-3.x pandas dataframe

pandas中是否有一种方法可以为pandas数据框的同一列提供两个名称,这样我就可以只用两个名称中的一个来索引列?这是一个说明我问题的快速示例:

import pandas as pd

index=['a','b','c','d']
# The list of tuples here is really just to 
# somehow visualize my problem below: 
columns = [('A','B'), ('C','D'),('E','F')]
df = pd.DataFrame(index=index, columns=columns)

# I can index like that:
df[('A','B')]
# But I would like to be able to index like this:
df[('A',*)] #error
df[(*,'B')] #error

1 个答案:

答案 0 :(得分:1)

您可以创建多索引列:

df.columns = pd.MultiIndex.from_tuples(df.columns)

然后你可以这样做:

df.loc[:, ("A", slice(None))]

enter image description here

或者:df.loc[:, (slice(None), "B")]

此处slice(None)相当于选择级别的所有索引,因此(slice(None), "B")会选择第二级为B的列,而不考虑第一级别名称。这在语义上与:相同。或者用pandas索引切片方式写。第二种情况df.loc[:, pd.IndexSlice[:, "B"]]