[英]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.