我有如下字典:
dict = {key_1:[[1, 2], [3, 4]], key_2:[[1, 2], [3, 4]]}
我想將其轉換為如下資料框:
colum_1 column_2
key_1 1 2
key_1 3 4
key_2 1 2
key_2 3 4
什么是最有效的方法來做到這一點。謝謝你的幫助=)
uj5u.com熱心網友回復:
讓我們嘗試理解以解除鍵值對
pd.DataFrame((k, *l) for k, v in d.items() for l in v).set_index(0)
1 2
0
key_1 1 2
key_1 3 4
key_2 1 2
key_2 3 4
uj5u.com熱心網友回復:
IIUC,您可以使用:
cols = ['col1', 'col2']
df = pd.DataFrame({k: zip(*v) for k,v in d.items()}, index=cols).T.explode(cols)
輸出:
col1 col2
key_1 1 2
key_1 3 4
key_2 1 2
key_2 3 4
uj5u.com熱心網友回復:
使用熊貓方法
這是一種純粹的熊貓方式,無需為任何尋找此功能的人使用任何串列/字典理解 -
d = {"key_1":[[1, 2], [3, 4]], "key_2":[[1, 2], [3, 4]]}
df = pd.DataFrame(d).T.stack().droplevel(-1).apply(pd.Series)
print(df)
0 1
key_1 1 2
key_1 3 4
key_2 1 2
key_2 3 4
基準 -
%%timeit
pd.DataFrame(d).T.stack().droplevel(-1).apply(pd.Series)
100 個回圈,5 個回圈中的最佳:每個回圈 2.56 毫秒
%%timeit
pd.DataFrame((k, *l) for k, v in d.items() for l in v).set_index(0)
1000 個回圈,5 個回圈中的最佳:每個回圈 719 μs
%%timeit
cols = ['col1', 'col2']
pd.DataFrame({k: zip(*v) for k,v in d.items()}, index=cols).T.explode(cols)
100 個回圈,5 個回圈中的最佳:每個回圈 6.53 毫秒
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446256.html
上一篇:從CSV讀取,轉換為JSON并存盤在MongoDB中
下一篇:如何根據另一個值重復列中的值
