使用多列索引创建Pandas Dataframe

5

我在创建带有多层索引问题的Pandas DataFrame时遇到了问题。在下面的数据中,您将看到其是2家银行的数据,每家银行都有2个资产,每个资产都有3个特征。 我的数据结构类似,并且我想从中创建一个DataFrame。

Data = [[[2,4,5],[3,4,5]],[[6,7,8],[9,10,11]]]

Banks = ['Bank1', 'Bank2']

Assets = ['Asset1', 'Asset2']

Asset_feature = ['private','public','classified']

我已经尝试了各种方法,但仍然无法创建准确的数据框。结果应该类似于这样:
      Asset1                      Asset2
      private public classified   private public classified
Bank1   2       4       5           3       4       5
Bank2   6       7       8           9       10      11

非常感谢您的帮助。

我正在使用Python3进行工作。 - Syed Ahmed
1个回答

6
import pandas as pd
import numpy as np
assets = ['Asset1', 'Asset2']
Asset_feature = ['private','public','classified']
Banks = ['Bank1', 'Bank2']
Data = [[[2,4,5],[3,4,5]],[[6,7,8],[9,10,11]]]
Data = np.array(Data).reshape(len(Banks),len(Asset_feature) * len(assets))


midx = pd.MultiIndex.from_product([assets, Asset_feature])
test = pd.DataFrame(Data, index=Banks, columns=midx)
test

这将产生以下输出

       Asset1                    Asset2                  
      private public classified private public classified
Bank1       2      4          5       3      4          5
Bank2       6      7          8       9     10         11

必须采用n个银行的解决方案,因此重新塑形不起作用。 - Syed Ahmed
嗨,Matthew。你发的第一个解决方案非常好用。我忘了提到这个解决方案还需要是n-Asset_feature和n-assets的解决方案。你的第一个解决方案非常完美。但现在我遇到问题,无法将此数据框转换为字典,以便可以以JSON格式发送到我的本地主机。 - Syed Ahmed
@SyedAhmed 只要数据以您在示例中发布的形式到达,无论资产和资产特征的大小如何,多索引都应该可以正常工作。 - Matthew Barlowe
我修改了你上面写的一些代码,它的功能类似。不过我写的是这样的:Data = np.array(Data).reshape(len(Banks),len(assets)*len(Asset_feature)),而不是原来的:Data = np.array(Data).reshape(len(Banks),6)。 - Syed Ahmed
1
@SyedAhmed 我已经修改了答案,以反映适合任何数据大小,而不仅仅是问题中提供的那一个。 - Matthew Barlowe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接