【问题标题】:Creating a Pandas Dataframe with Multi Column Index创建具有多列索引的 Pandas 数据框
【发布时间】:2020-02-22 04:23:33
【问题描述】:

我在创建具有多索引问题的 Pandas 数据框时遇到问题。在下面的数据中,您将看到它是 2 家银行的数据,每家银行有 2 个资产,每个资产有 3 个特征。 我的数据结构相似,我想从中创建一个数据框。

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

标签: python pandas dataframe multi-index


【解决方案1】:
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-banks 解决方案。所以重塑行不通。
  • 嗨,马修。您发布的第一个解决方案就像一个魅力。我忘了提到解决方案还需要是 n-Asset_feature 和 n-assets 解决方案。您的第一个解决方案是完美的。但现在我遇到了将这个数据帧转换为字典的问题,以便我可以将它以 JSON 格式发送到我的本地主机。
  • @SyedAhmed 只要数据以您在示例中发布的形状到达,无论资产和资产特征的大小如何,多索引都应该可以工作
  • 我更改了您在上面编写的一些代码,它的工作方式类似。而不是:Data = np.array(Data).reshape(len(Banks),6)。我写了这样的东西: Data = np.array(Data).reshape(len(Banks),len(assets)*len(Asset_feature))
  • @SyedAhmed 我更改了答案以反映适合任何数据大小,而不仅仅是问题中提出的那个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 2014-08-09
  • 2017-09-06
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多