如何对Pandas DataFrame按指定列分组并转为嵌套字典
按列分组Pandas DataFrame并转换为嵌套字典
输入示例
给定如下三列的Pandas DataFrame:
import pandas as pd input_df = pd.DataFrame({ 'A': ['asset_one', 'asset_one', 'asset_two'], 'B': ['item_one', 'item_two', 'item_three'], 'C': ['feature_a', 'feature_b', 'feature_c'] })
期望输出
需要按列A分组后,生成嵌套字典:外层键为分组名称,内层字典为对应分组中B列与C列的键值对:
output = { 'asset_one': {'item_one': 'feature_a', 'item_two': 'feature_b'}, 'asset_two': {'item_three': 'feature_c'} }
解决方案
以下是两种简洁高效的实现方式:
方法1:groupby + apply 结合 dict(zip())
通过分组后对每个子DataFrame直接构建键值对字典:
output = input_df.groupby('A').apply(lambda x: dict(zip(x['B'], x['C']))).to_dict()
方法2:先设置索引再分组转换(更高效)
先将B列设为索引,再按A分组后直接将C列转换为字典:
output = input_df.set_index('B').groupby('A')['C'].apply(dict).to_dict()
两种方法都能得到符合要求的嵌套字典结果,第二种方法在处理大数据量时性能更优。
内容的提问来源于stack exchange,提问作者LucaM
相关产品推荐
相关产品推荐

