Как эффективно расширить одноиндексный DataFrame до многоиндексного DataFrame? (питон, панды)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как эффективно расширить одноиндексный DataFrame до многоиндексного DataFrame? (питон, панды)

Сообщение Anonymous »

Код: Выделить всё

import pandas as pd
concordance_region = pd.DataFrame(
{
"country 1": pd.Series([1, 0], index=["region a", "region b"]),
"country 2": pd.Series([0, 1], index=["region a", "region b"]),
"country 3": pd.Series([0, 1], index=["region a", "region b"]),
}
)
display(concordance_region)
country_index = concordance_region.columns
region_index = concordance_region.index
sector_index = ['sector a','sector b']
country_sector = pd.MultiIndex.from_product([country_index, sector_index], names=["country", "sector"])
region_sector = pd.MultiIndex.from_product([region_index, sector_index], names=["region", "sector"])

Код: Выделить всё

concordance_region_expanded = pd.DataFrame([[1,0,0,0,0,0],[0,1,0,0,0,0],[0,0,1,0,1,0],[0,0,0,1,0,1]], index=region_sector, columns=country_sector)
display(concordance_region_expanded)
Я хочу добиться указанного выше расширения без жесткого кодирования числа.
Возможен следующий вариант:

Код: Выделить всё

concordance_region_extended = pd.DataFrame(index=region_sector, columns=country_sector)
for region in region_index:
for sector_1 in sector_index:
for country in country_index:
for sector_2 in sector_index:
if sector_1 == sector_2 and concordance_region.loc[region, country] == 1:
concordance_region_expanded.loc[(region, sector_1),(country, sector_2)] = 1
concordance_region_expanded = concordance_region_expanded.fillna(value=0).infer_objects(copy=False)
concordance_region_expanded
Но я думаю, что приведенный выше код не является ни эффективным, ни элегантным.
Есть ли способ решить описанную выше проблему?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -efficient
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»