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