Объединить строку с уровнем MultiIndex, сопоставленным с другим фреймом данных - PullRequest
0 голосов
/ 15 ноября 2018

Я хотел бы объединить информацию с основным индексом мультииндекса. Более конкретно, я хотел бы объединить описание продукта импортируемого продукта в столбце основного индекса, где указывается только код продукта.

Рассмотрим следующий код ...

index = [('A', 'x'), ('A', 'y'),
         ('B', 'z'), ('B', 'w'),
         ('C', 's'), ('C', 'q')]

Numeric = [33871648, 37253956,
           18976457, 19378102,
           20851820, 25145561]

index = pd.MultiIndex.from_tuples(index)


pop = pd.Series(Numeric, index=index)
pop.index.names = ['Imported Product', 'Manufactured Product']


print(pop)

Текущий результат:

Imported Product  Manufactured Product
A                 x                       33871648
                  y                       37253956
B                 z                       18976457
                  w                       19378102
C                 s                       20851820
                  q                       25145561

Учтите, что у меня есть отдельный фрейм данных со следующей информацией ...

  Imported Product    Product Description
   A                  Widget 1
   B                  Widget 2
   C                  Widget 3

Желаемый результат:

Imported Product  Manufactured Product
A - Widget 1      x                       33871648
                  y                       37253956
B - Widget 2      z                       18976457
                  w                       19378102
C - Widget 3      s                       20851820
                  q                       25145561

Основная идея здесь состоит в том, чтобы использовать дополнительное пустое пространство, созданное в первом столбце. по моим реальным данным, один импортированный продукт может входить в более чем 100 произведенных продуктов, поэтому вместо добавления новых столбцов для отображения описания импортируемого продукта я бы предпочел сделать это в соответствии с требованиями, указанными здесь, так как мой мультииндекс уже имеет много столбцов.

Хотя выше я только что упомянул описание продукта как элемент информации для объединения в основной индекс ... в моих реальных данных была бы другая информация, с которой я хотел бы сделать это, включая информацию, полученную в результате вычислений в питон.

Заранее спасибо !!!

1 Ответ

0 голосов
/ 15 ноября 2018

set_index + map + set_levels

Создайте отображение с помощью mapper фрейма данных и затем используйтеset_levels:

s = mapper.set_index('Imported Product')['Product Description']

new_labels = pop.index.levels[0] + '-' + pop.index.levels[0].map(s.get)
pop.index.set_levels(new_labels, level=0, inplace=True)

print(pop)

Imported Product  Manufactured Product
A-Widget1         x                       33871648
                  y                       37253956
B-Widget2         z                       18976457
                  w                       19378102
C-Widget3         s                       20851820
                  q                       25145561
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...