我试图将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]
我将坐标分类到适当的箱子中,输出为:
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
我希望做的是在df
按订单排序list
,所以我希望输出为:
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号:
Bin
0 1
1 2
2 2
3 2
4 4
5 4
6 2
7 2
8 3
9 1
我已尝试collections.OrderedDict
,但我需要按索引排序,而不是keys
。
我不确定我是否可以将输入列为列表?
答案 0 :(得分:1)
跳过pandas部分
b = collections.OrderedDict(bins) #Resort by order in list
collections.OrderedDict不对构造函数中给出的值进行排序。它只是保留了创建字典的顺序。
如果你需要重新订购字典并保留它的顺序,那么你需要对箱子进行排序(根据你的要求),然后将其传递给有序的词典
作为例子;如果您想对密钥上的bins
进行排序,
b = collections.OrderedDict()
for k in sorted(bins):
b[k] = bins[k]