如何使用 python 中数据框的索引创建系列字典

How to create a dictionary of series with an index from a dataframe in python

我有以下数据框

df = pd.DataFrame({'col_1': ['Animal','Deer','Sheep','Fish','Vehicle','Truck','Car','Mineral','Gold','Silver'], 
                   'col_2': ['Animal',0.5,0.25,0.25,'Vehicle',0.5,0.5,'Mineral',0.75,0.25],
                   'Group': [0,0,0,0,1,1,1,2,2,2]})

我想创建系列词典。我希望第 1 列是索引,第 2 列是值和 Group 来指定系列。 EG 第一个系列的名称(键)将是“动物”,它应该看起来像:


我尝试了以下方法。但这是不对的,我得到的是数据框字典而不是系列,headers 在第一行。

dict_of_series = {i: df.loc[df.group == i, ['col_1', 'col_2']] for i in range(1, df.group.iat[-1])} 

loop by groupby object with DataFrame.set_axis for set columnsnames by first row per groups, remove first row and last column by indexing in DataFrame.iloc and last remove columns names in DataFrame.rename_axis使用字典理解:

dict_of_series = {g['col_2'].iat[0]: 
                  g.set_axis(g.iloc[0], axis=1).iloc[1:, :-1].rename_axis(None, axis=1) 
                  for i, g in df.groupby('Group')} 


print (dict_of_series['Animal'])
  Animal Animal
1   Deer    0.5
2  Sheep   0.25
3   Fish   0.25

print (dict_of_series['Vehicle'])
  Vehicle Vehicle
5   Truck     0.5
6     Car     0.5

print (dict_of_series['Mineral'])
  Mineral Mineral
8    Gold    0.75
9  Silver    0.25

对于系列使用 DataFrame.set_index before solution and also change iloc for select last column to Series and last Series.rename_axis:

df = df.set_index('col_1')

dict_of_series = {g['col_2'].iat[0]: 
                  g.set_axis(g.iloc[0], axis=1).iloc[1:, 0].rename_axis(None)
                  for i, g in df.groupby('Group')} 


print (dict_of_series['Animal'])
Deer      0.5
Sheep    0.25
Fish     0.25
Name: Animal, dtype: object