我有一個多指標列數據框,看起來像這樣:如何僅使用MultiIndex列從DataFrame中選擇特定列?
# sample data
col = pd.MultiIndex.from_arrays([['one', 'one', 'one', 'two', 'two', 'two'],
['a', 'b', 'c', 'a', 'b', 'c']])
data = pd.DataFrame(np.random.randn(4, 6), columns=col)
data
什麼是從第二級只選擇特定的列(如['a', 'c']
,而不是一個區間)的合適的,簡單的方法?
目前,我這樣做是這樣的:
import itertools
tuples = [i for i in itertools.product(['one', 'two'], ['a', 'c'])]
new_index = pd.MultiIndex.from_tuples(tuples)
print(new_index)
data.reindex_axis(new_index, axis=1)
它不覺得自己是一個很好的解決方案,但是,因爲我已經出局itertools
,手工打造的又一多指標和然後reindex(和我的實際代碼更混亂,因爲列列表並不是很容易獲取)。我很確定必須有一些ix
或xs
這樣做,但我試過的一切都會導致錯誤。
您是否嘗試過使用字典? – darmat
不,我沒有。你的意思是更快地構建MultiIndex?如果是這樣,那不是重點 - 我想避免它,並直接用像'data.xs(['a','c'],axis = 1,level = 1)'這樣的東西編號' – metakermit
讓我們假設: – darmat