Я создаю MultiIndex.from_product(), но он должен быть продуктом уникальных значений из двух отдельных MultiIndexes. Мое решение ниже работает, но мне интересно, есть ли более элегантное решение.MultiIndex из продукта уникальных значений двух индексов
from pandas import MultiIndex
from collections import OrderedDict
countries = array(['US', 'UK', 'AU'], dtype=object)
regions = array(['North', 'South'], dtype=object)
index_names = ['country','region']
index = MultiIndex.from_product([countries, regions], names=index_names)
dic = OrderedDict()
for name in index.names:
dic[name] = index.get_level_values(name).unique()
countries_2 = array(['US'], dtype=object)
regions_2 = array(['South','East','West'], dtype=object)
index_names_2 = ['country','region']
index_2 = MultiIndex.from_product([countries_2, regions_2], names=index_names_2)
dic_union = OrderedDict()
for key in dic.keys():
dic_union[key] = unique(concatenate([index_2.get_level_values(key).unique(),
dic[key]]))
print MultiIndex.from_product(dic_union.values(), names=dic_union.keys())
Желаемый результат:
country region
AU East
North
South
West
UK East
North
South
West
US East
North
South
West