如何使用pandas将DataFrame列匹配值转换为按值降序的分组字典
解决方案
以下代码可直接实现需求,5000条数据量下运行无性能压力:
完整代码示例
import pandas as pd # 构造示例数据(实际使用时替换为你自己的DataFrame即可) df = pd.DataFrame({ 'v_id': [222, 222, 222, 33, 555, 555, 555], 'r_id': [1, 2, 9, 1, 1, 5, 7], 'count': [1000, 1500, 600, 7000, 6000, 60, 2300] }) # 核心处理逻辑 # 1. 按v_id分组、每组内按count降序排序 df_sorted = df.sort_values(['v_id', 'count'], ascending=[True, False]) # 2. 分组聚合生成有序字典 result = df_sorted.groupby('v_id').apply( lambda x: dict(zip(x['r_id'], x['count'])) ).reset_index(name='data')
输出结果验证
最终得到的result结构如下:
| v_id | data |
|---|---|
| 33 | {1: 7000} |
| 222 | {2: 1500, 1: 1000, 9: 600} |
| 555 | {1: 6000, 7: 2300, 5: 60} |
注意事项
Python 3.7及以上版本默认支持字典有序,如果你使用的是更低版本,可将代码中的dict替换为collections.OrderedDict,即可保证字典按count降序排列。
内容的提问来源于stack exchange,提问作者Shouhaddo Paul
相关产品推荐
相关产品推荐

