使用元组键将 Pandas 数据框转换为字典以进行三元图
Posted
技术标签:
【中文标题】使用元组键将 Pandas 数据框转换为字典以进行三元图【英文标题】:Convert Pandas Dataframe to Dictionary with Tuple Keys for Ternary plot 【发布时间】:2018-11-02 06:55:53 【问题描述】:我正在用python-ternary绘制三元图
我的数据在熊猫数据框中。我需要将它转换为字典映射 (i, j) 到浮点数,作为三元中heatmap
函数的输入。
我的数据框 (df) 如下所示:
i j value
0 1 2 7
1 3 4 8
2 5 6 9
我需要制作这样的字典:
(1, 2): 7, (5, 6): 9, (3, 4): 8
我目前的解决方法是非常慢的蛮力循环:
import pandas as pd
df = pd.DataFrame('i': [1, 3, 5], 'j': [2, 4, 6], 'value': [7, 8, 9])
data = dict()
for k in range(0, len(df)):
data[(df.iloc[k]['i'],df.iloc[k]['j'])] = \
df.iloc[k]['value']
拜托,有人可以帮助我以更快或更pythonic的方式做到这一点吗?
【问题讨论】:
【参考方案1】:将set_index
与to_dict
一起使用:
d = df.set_index(['i','j'])['value'].to_dict()
zip
和 dict comprehension
的替代方案:
d = (a,b):c for a,b,c in zip(df['i'], df['j'], df['value'])
print (d)
(1, 2): 7, (3, 4): 8, (5, 6): 9
【讨论】:
@Charles Maupou - 谢谢。以上是关于使用元组键将 Pandas 数据框转换为字典以进行三元图的主要内容,如果未能解决你的问题,请参考以下文章
将带有元组键(key1,key2)的字典转换为数据框,当key1是索引并且key2时,值是列