Итак, у меня есть следующие данные:
И я прочитал его в python, используя read_excel(), и сделал некоторые преобразования, что дало мне следующий фрейм данных pandas:
Теперь я хочу создать словарь, в котором все пары в каждой строке возвращают «Pr Unit Cost» строки в виде значения, например:
{('Macon', 'Tacoma'): 35.5,
('Macon', 'San Diego'): 35.5,
('Macon', 'Dallas'): 35.5,
('Macon', 'Denver'): 35.5,
('Macon', 'St. Louis'): 35.5,
('Macon', 'Tampa'): 35.5,
('Macon', 'Baltimore'): 35.5,
('Louisville', 'Tacoma'): 37.5,
('Louisville', 'San Diego'): 37.5,
('Louisville', 'Dallas'): 37.5,
('Louisville', 'Denver'): 37.5,
('Louisville', 'St. Louis'): 37.5,
('Louisville', 'Tampa'): 37.5,
('Louisville', 'Baltimore'): 37.5,
('Detroit', 'Tacoma'): 39,
('Detroit', 'San Diego'): 39,
('Detroit', 'Dallas'): 39,
('Detroit', 'Denver'): 39,
('Detroit', 'St. Louis'): 39,
('Detroit', 'Tampa'): 39,
('Detroit', 'Baltimore'): 39,
('Phoenix', 'Tacoma'): 36.25,
('Phoenix', 'San Diego'): 36.25,
('Phoenix', 'Dallas'): 36.25,
('Phoenix', 'Denver'): 36.25,
('Phoenix', 'St. Louis'): 36.25,
('Phoenix', 'Tampa'): 36.25,
('Phoenix', 'Baltimore'): 36.25
}
Как это может быть достигнуто элегантным способом?
Используйте DataFrame.stack
для MultiIndex Series
, присвойте повторяющиеся значения Pr Unit Cos
, а затем Series.to_dict
:
#remove not necessary columns in final dict
df1 = df.drop(['Capacity','Pr Unit Cos'], axis=1)
s = df1.stack(dropna=False)
d = (pd.Series(np.repeat(df['Pr Unit Cos'].to_numpy(),
len(df1.columns)), index=s.index)
.to_dict())
Это сработало блестяще. Большое спасибо.