[英]Sort Dict by order in list (python)
我正在尝试将dict
转换为有序df
。 该dict
表示一个scatter plot
,显示各个bins
的坐标。
可以说x,y lists
如下:
x = [10,40,33,44,66,77,33,44,55,2]
y = [1,4,53,34,56,47,83,44,25,12]
我将坐标分类到适当的bin中,输出为:
bins =({
1: [(10, 1), (2, 12)],
2: [(40, 4), (33, 53), (44, 34), (33, 83), (44, 44)],
3: [(66, 56), (55, 25)],
4: [(77, 47)]
})
如果我转换为df:
df = pd.DataFrame.from_dict(bins, orient = 'index')
d = df.transpose()
输出:
1 2 3 4
0 (10, 1) (40, 4) (66, 56) (77, 47)
1 (2, 12) (33, 53) (55, 25) None
2 None (44, 34) None None
3 None (33, 83) None None
4 None (44, 44) None None
我希望做的是按list
中的顺序对df
进行排序,因此我希望输出为:
1 2 3 4
0 (10, 1)
1 (40, 4)
2 (33, 53)
3 (44, 34)
4 (66, 56)
5 (77, 47)
6 (33, 83)
7 (44, 44)
8 (55, 25)
9 (2, 12)
我不确定是否可以做到。 因此,我正在考虑尝试返回每个索引处每个散点的箱号:
Bin
0 1
1 2
2 2
3 2
4 4
5 4
6 2
7 2
8 3
9 1
我已经尝试过collections.OrderedDict
但是我需要按索引而不是keys
排序。
我不确定是否可以将输入内容设为列表列表?
跳过熊猫部分
b = collections.OrderedDict(bins) #Resort by order in list
collections.OrderedDict不对构造函数中给定的值进行排序。 它只是保留了字典创建的顺序。
如果您需要对字典进行重新排序并保留其顺序,则需要对垃圾箱进行排序(根据您的要求),然后将其传递给已排序的字典
举个例子; 如果您想对钥匙上的bins
进行分类,
b = collections.OrderedDict()
for k in sorted(bins):
b[k] = bins[k]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.