Pandas DataFrame to dict
Есть такой DataFrame:
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d, index=["ind1","ind2"])
df.name = 'dfname'
df
col1 col2
ind1 1 3
ind2 2 4
Как наиболее просто и элегантно получить:
out = {
'dfname_ind1_col1' : '1',
'dfname_ind1_col2' : '3',
'dfname_ind2_col1' : '2',
'dfname_ind2_col2' : '4'
}
Ответы (1 шт):
Автор решения: Andrey
→ Ссылка
Можно так:
In [229]: df
Out[229]:
col1 col2
ind1 1 3
ind2 2 4
In [230]: df.name
Out[230]: 'dfname'
In [231]: {'_'.join((df.name,) + k): v for k, v in df.stack().to_dict().items()}
Out[231]:
{'dfname_ind1_col1': 1,
'dfname_ind1_col2': 3,
'dfname_ind2_col1': 2,
'dfname_ind2_col2': 4}
In [16]: df.stack()
Out[16]:
ind1 col1 1
col2 3
ind2 col1 2
col2 4
dtype: int64
In [17]: df.stack().to_dict()
Out[17]:
{('ind1', 'col1'): 1,
('ind1', 'col2'): 3,
('ind2', 'col1'): 2,
('ind2', 'col2'): 4}