2017-03-29 119 views
0

有沒有一種方法可以讓熊貓給同一列熊貓數據框的兩個名稱,以便我只能通過兩個名稱中的一個來索引列?下面是一個簡單的例子說明我的問題:Python - 每列有多個名稱的熊貓數據框

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

您可以創建多索引列:

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的列,而不管第一級別名稱如何。這在語義上與:相同。或者以熊貓索引片方式寫入。 df.loc[:, pd.IndexSlice[:, "B"]]第二種情況。

+0

Thx,完成這項工作。你能否留下關於切片的短句(無)? – Tim

相關問題