根据数据框的列在 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
即可满足您的需求。
我有以下示例数据:
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
即可满足您的需求。