熊猫:创建一个以元组为键的字典

法式咖啡

鉴于此DataFrame

import pandas as pd
first=[0,1,2,3,4]
second=[10.2,5.7,7.4,17.1,86.11]
third=['a','b','c','d','e']
fourth=['z','zz','zzz','zzzz','zzzzz']
df=pd.DataFrame({'first':first,'second':second,'third':third,'fourth':fourth})
df=df[['first','second','third','fourth']]

   first  second third fourth
0      0   10.20     a      z
1      1    5.70     b     zz
2      2    7.40     c    zzz
3      3   17.10     d   zzzz
4      4   86.11     e  zzzzz

我可以创建一个以列列表作为值的字典,如下所示:

d = {df.loc[idx, 'first']: [df.loc[idx, 'second'], df.loc[idx, 'third']] for idx in range(df.shape[0])}

但是如何创建一个包含firstsecond作为键的元组的字典

结果将是:

In[1]:d
Out[1]: 
{(0,10.199999999999999): 'a',
 (1,5.7000000000000002): 'b',
 (2,7.4000000000000004): 'c',
 (3,17.100000000000001): 'd',
 (4,86.109999999999999): 'e'}

PS:我又如何确保pandas不会混淆这些值?10.20现在变成了10.1999999999 ...

耶斯列尔

您需要create MultiIndexby set_index,然后调用Series.to_dict

a = df.set_index(['first','second']).third.to_dict()
print (a)
{(2, 7.4): 'c', (1, 5.7): 'b', (3, 17.1): 'd', (0, 10.2): 'a', (4, 86.11): 'e'}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以元组为键的 Python 字典,以键为元组的第一个元素的新字典的键

如何可读且有效地创建一个可迭代组合字典,并以其索引的元组为键?

从字典列表中创建一个 pandas DataFrame,其中字典键设置为行标签

从嵌套字典创建一个熊猫数据框,行索引作为字典键和一个字典,每个键具有不同的列

创建一个以名字为键的字典,与键关联的全名作为值

从键为元组的字典创建数据框

比较基于键的字典并使用缺失的键创建一个新的字典,python3 中的值为 0

将元组列表转换为字典,给每个元组一个不同的键

从以元组为键的字典中获取熊猫数据框

熊猫:创建一个以列列表作为值的字典

从列表字典创建一个熊猫数据框

阅读此文件,并创建一个字典,该字典具有元组类型的键和浮点类型的值

如何从嵌套字典创建一个平面字典,该字典的键是参考字典的子集?

在字典中为一个键存储多个值

如何打印一个键为整数的字典元素?

根据字典的键创建一个新列?

从字典列表的一个键的值创建列表

将Python字典键分组为一个列表,并使用此列表作为值创建一个新字典

如何在键(元组)的第一个元素上对字典进行排序

Python对一个字典的元素求和是否具有相似的键(元组)

你如何遍历一个元组(str),然后返回一个包含键(来自元组)和键的索引作为值的字典?

如何将一个键和一个元组作为键值的字典转换成DataFrame?

具有元组键的字典:所有具有相同第一个元素的元组

一个班轮:从列表创建一个以索引为键的字典

Python在键中过滤字典的唯一值并创建另一个过滤的字典

创建一个键为枚举值的接口

在字典中为一个键添加具有多个值的列表或字典-Python

根据第一个元素从元组列表创建字典

迭代两个字典并创建一个新的字典,其中的键不匹配