簡體   English   中英

如何從多索引字典構建 Pandas DataFrame

[英]How to build a Pandas DataFrame from a multi-index dictionary

我試圖弄清楚如何從多索引字典中構建 Pandas DataFrame 。 現在我的數據在每個索引的一行中,如果它在每個索引的多行中,我希望它。

x = [1,2,3,4,5,6,7,8,9,10]
data1 = {'symbol_1':x,'symbol_2': x,'symbol_3':x}
data2 = {'symbol_1':x,'symbol_2': x,'symbol_3':x}
data3 = {'symbol_1':x,'symbol_2': x,'symbol_3':x}
y = {'data_1':data1, 'data_2':data2, 'data_3':data3}

需要在多行中制作數據

如果MultiIndex中每行需要多個值,請使用concat和 dict 理解:

df = pd.concat({k:pd.DataFrame(v) for k, v in y.items()})
print (df)
          symbol_1  symbol_2  symbol_3
data_1 0         1         1         1
       1         2         2         2
       2         3         3         3
       3         4         4         4
       4         5         5         5
       5         6         6         6
       6         7         7         7
       7         8         8         8
       8         9         9         9
       9        10        10        10
data_2 0         1         1         1
       1         2         2         2
       2         3         3         3
       3         4         4         4
       4         5         5         5
       5         6         6         6
       6         7         7         7
       7         8         8         8
       8         9         9         9
       9        10        10        10
data_3 0         1         1         1
       1         2         2         2
       2         3         3         3
       3         4         4         4
       4         5         5         5
       5         6         6         6
       6         7         7         7
       7         8         8         8
       8         9         9         9
       9        10        10        10

傳遞給DataFrame + explode

df = pd.DataFrame(y).apply(pd.Series.explode,1).T

        symbol_1  symbol_2  symbol_3
data_1         1         1         1
data_1         2         2         2
data_1         3         3         3
data_1         4         4         4
data_1         5         5         5
data_1         6         6         6
data_1         7         7         7
data_1         8         8         8
data_1         9         9         9
data_1        10        10        10
data_2         1         1         1
data_2         2         2         2
data_2         3         3         3
data_2         4         4         4
data_2         5         5         5
data_2         6         6         6
data_2         7         7         7
data_2         8         8         8
data_2         9         9         9
data_2        10        10        10
data_3         1         1         1
data_3         2         2         2
data_3         3         3         3
data_3         4         4         4
data_3         5         5         5
data_3         6         6         6
data_3         7         7         7
data_3         8         8         8
data_3         9         9         9
data_3        10        10        10

這是使用from_dict的另一種方式:

dfs = []
for key in y.keys():
    df = pd.DataFrame.from_dict(y[key])
    df['index'] = key
    dfs.append(df)

df = pd.concat(dfs)
print(df)

Output:

  symbol_1  symbol_2  symbol_3   index
0         1         1         1  data_1
1         2         2         2  data_1
2         3         3         3  data_1
3         4         4         4  data_1
4         5         5         5  data_1
5         6         6         6  data_1
6         7         7         7  data_1
7         8         8         8  data_1
8         9         9         9  data_1
9        10        10        10  data_1
0         1         1         1  data_2
1         2         2         2  data_2
2         3         3         3  data_2
3         4         4         4  data_2
4         5         5         5  data_2
5         6         6         6  data_2
6         7         7         7  data_2
7         8         8         8  data_2
8         9         9         9  data_2
9        10        10        10  data_2
0         1         1         1  data_3
1         2         2         2  data_3
2         3         3         3  data_3
3         4         4         4  data_3
4         5         5         5  data_3
5         6         6         6  data_3
6         7         7         7  data_3
7         8         8         8  data_3
8         9         9         9  data_3
9        10        10        10  data_3

我發現的另一種顯示具有相同索引的數據的方法

dict_of_df = {k: pd.DataFrame(v) for k,v in y.items()}
df = pd.concat(dict_of_df, axis=1)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM