我想為一個看起來像這樣的 docxpl 表創建一個字典。
target=[{'NR1': 1, 'AREA1': 'A', 'RES1': 3.2, 'NR2': 4, 'AREA2': 'D', 'RES2': 5.1, 'NR3': 7, 'AREA3': 'G', 'RES3': 3.2},
{'NR1': 2, 'AREA1': 'B', 'RES1': 3.6, 'NR2': 5, 'AREA2': 'E', 'RES2': 4.6, 'NR3': 8, 'AREA3': 'H', 'RES3': 2.9},
{'NR1': 3, 'AREA1': 'C', 'RES1': 4.2, 'NR2': 6, 'AREA2': 'F', 'RES2': 3.8, 'NR3': 9, 'AREA3': 'I', 'RES3': 3.7},
{'NR1': 10, 'AREA1': 'J', 'RES1': 5.2}]
我有一個資料框 df (如下),如果我執行 df.to_dict('records') 我會得到以下結果。
df=pd.DataFrame({'NR':range(1,11),
'AREA': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
'RES': [3.2, 3.6, 4.2, 5.1, 4.6, 3.8, 3.2, 2.9, 3.7, 5.2]})
dict_=df.to_dict('records')
print(dict)
[{'NR': 1, 'AREA': 'A', 'RES': 3.2},
{'NR': 2, 'AREA': 'B', 'RES': 3.6},
{'NR': 3, 'AREA': 'C', 'RES': 4.2},
{'NR': 4, 'AREA': 'D', 'RES': 5.1},
{'NR': 5, 'AREA': 'E', 'RES': 4.6},
{'NR': 6, 'AREA': 'F', 'RES': 3.8},
{'NR': 7, 'AREA': 'G', 'RES': 3.2},
{'NR': 8, 'AREA': 'H', 'RES': 2.9},
{'NR': 9, 'AREA': 'I', 'RES': 3.7},
{'NR': 10, 'AREA': 'J', 'RES': 5.2}]
我需要找到一種方法讓 dict_ 中的第四和第七個字典與第一個字典相同。我還需要一種方法來更改每個字典中的鍵名,nr1、nr2、nr3 等。
任何如何最好地解決這個問題的建議將不勝感激。
uj5u.com熱心網友回復:
可能不是最好的方法,但它有效:
out = (
df.set_index([df.index // 3, 1 df.index % 3]).melt(ignore_index=False).sort_index()
.assign(variable=lambda x: x['variable'] x.index.get_level_values(1).astype(str))
.groupby(level=0).apply(lambda x: x.set_index('variable').squeeze().to_dict()).tolist()
)
輸出:
>>> out
[{'NR1': 1,
'AREA1': 'A',
'RES1': 3.2,
'NR2': 2,
'AREA2': 'B',
'RES2': 3.6,
'NR3': 3,
'AREA3': 'C',
'RES3': 4.2},
{'NR1': 4,
'AREA1': 'D',
'RES1': 5.1,
'NR2': 5,
'AREA2': 'E',
'RES2': 4.6,
'NR3': 6,
'AREA3': 'F',
'RES3': 3.8},
{'NR1': 7,
'AREA1': 'G',
'RES1': 3.2,
'NR2': 8,
'AREA2': 'H',
'RES2': 2.9,
'NR3': 9,
'AREA3': 'I',
'RES3': 3.7},
{'NR1': 10, 'AREA1': 'J', 'RES1': 5.2}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/445157.html
