根据数据框的列在 python 中创建字典

create a dictionary in python from columns of a dataframe

我有以下示例数据:

class   name
Pref    Ab
Val     BE
Base    es
Pref    Cw
Base    SS

此数据在数据框中,我需要为 class 创建一个映射:名称如下所示:

Pref : ['Ab','Cw'],
Val  : ['BE'],
Base : ['es','SS']

这将是一个包含 class 映射的字典,它的组件 names.The 键是 class,它的值是 class 中的名称],因此每个 class 的值列表,其中每个 class 的列表长度可能不同。 有人可以帮我解决这个问题吗?

您会寻找 groupby + to_dict 操作 -

r = df.groupby('class').name.apply(list).to_dict()

或者,

r = df.groupby('class').name.agg(pd.Series.tolist).to_dict()

r
{'Base': ['es', 'SS'], 'Pref': ['Ab', 'Cw'], 'Val': ['BE']}

工作原理 -

  • class 列包含 3 个类别。我们希望每个类别作为索引。
  • 此外,name 列中的每个元素都需要按 class 分组并出现在列表中

由此可见,groupby操作是这里最直接的操作。将 apply/aggregate 与 list 分组以获得索引为 -

的系列
class
Base    [es, SS]
Pref    [Ab, Cw]
Val         [BE]
Name: name, dtype: object

在此调用 to_dict 即可满足您的需求。