Короче говоря, я хочу расширить представление на уровне группы на отдельные компоненты этих групп на основе созданной схемы сопоставления.
У меня есть два набора данных. У меня есть транзакционные данные в df
и вложенный словарь для отображения в nested
.
import pandas as pd
nested = {"Group A":{"Component 1 Share": 0.25, "Component 2 Share": 0.25, "Component 3 Share": 0.25, "Component 4 Share": 0.25},
"Group B":{"Component 1 Share": 0.5, "Component 5 Share": 0.5}}
data = {'date': ['2018-12-01', '2018-12-01', '2018-12-02', '2018-12-02', '2018-12-02'],
'groups':['Group A', 'Group B', 'Group A', 'Group B', 'Group A'],
'sold': [100, 200, 200, 300, 60]}
df = pd.DataFrame(data, columns = ['date', 'groups','sold'])
Моя цель - перевести его в этот формат на уровне компонентов с помощью словаря nested
. Я упростил обе структуры данных, где реальный df
намного больше, а реальный nested
словарь содержит гораздо больше элементов различной длины.
goal_data = {'date': ['2018-12-01', '2018-12-01', '2018-12-01', '2018-12-01',
'2018-12-01', '2018-12-01',
'2018-12-02', '2018-12-02', '2018-12-02', '2018-12-02',
'2018-12-02', '2018-12-02',
'2018-12-02', '2018-12-02', '2018-12-02', '2018-12-02'],
'components':["Component 1 Share", "Component 2 Share", "Component 3 Share", "Component 4 Share",
"Component 1 Share", "Component 5 Share",
"Component 1 Share", "Component 2 Share", "Component 3 Share", "Component 4 Share",
"Component 1 Share", "Component 5 Share",
"Component 1 Share", "Component 2 Share", "Component 3 Share", "Component 4 Share"],
'sold': [25, 25, 25, 25,
100, 100,
50, 50, 50, 50,
150, 150,
15,15,15,15]}
component_df = pd.DataFrame(goal_data, columns=["date", "components", "sold"])
Я безуспешно пробовал различные методы, такие как map
, apply
, lookup
, & merge
, но интуитивно знаю, что есть способ развернуть данные уровня группы в компоненты.