python - 使用 2 列和 pandas 中第三列的值创建 dict 的 dict
问题描述
我在 python 中有一个数据框,看起来有点像以下内容:
df = pd.DataFrame({
'tag':['php','image-processing','file-upload','upload','mime-types'] * 2,
'probability':np.arange(10),
'token':['check'] * 5 + ['imag'] * 5
}).set_index(['tag','token'])
print (df)
probability
tag token
php check 0
image-processing check 1
file-upload check 2
upload check 3
mime-types check 4
php imag 5
image-processing imag 6
file-upload imag 7
upload imag 8
mime-types imag 9
我需要创建一个 dicts 的 dicts 和概率值。例如对于php
{'php': {'check': 0,
'imag': 1,
....},
'image-processing': {....},
'file-upload': {....},
}
我不需要任何概率值顺序的内部字典。我可以很容易地编写代码,但我需要知道是否有任何可以在这里应用的 pandas 技巧。
解决方案
使用dictionary comprehension
:
d = {k:v.reset_index(level=0, drop=True).to_dict()
for k, v in df.groupby(level=0)['probability']}
另一种解决方案:
d = {k: dict(v.values) for k, v in df.reset_index(level=1).groupby(level=0)}
print (d)
{'file-upload': {'check': 2, 'imag': 7},
'image-processing': {'check': 1, 'imag': 6},
'mime-types': {'check': 4, 'imag': 9},
'php': {'check': 0, 'imag': 5},
'upload': {'check': 3, 'imag': 8}}
推荐阅读
- reactjs - 如何模拟保存到 LocalStorage 的 redux 存储
- python - 如何为具有 1 列或更多列的 Pandas 数据透视表保留或显示值的列名称?
- graphics - 如何在three.js中获得圆柱映射?
- python - 不断收到“缺少 1 个必需的位置参数”,但给出了参数
- php - 使用 phpseclib3 从 Azure B2C 密钥生成公钥
- azure-functions - 使用 VS Code,如何将持久函数添加到具有目标框架 5.0 的函数应用程序
- python - 如何结合 None 和“g”命名空间?
- python - 减去具有不同索引的熊猫系列
- lua - ::(双冒号)在lua中赋值之前是什么意思?
- python-3.x - 如何修复 Quart 中的 Discord 登录循环