Python 有没有更好的方法来创建多索引,在多索引数据前面有列?

Python 有没有更好的方法来创建多索引,在多索引数据前面有列?,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,是我当前的输出和我想要改进的 代码如下: df = pd.DataFrame(np.random.rand(8, 3), index=[['Fund Name', 'Jerry Partners','', '', 'Fund Name','Boris LTD','',''], ['$Bln AUM','2Bln','', '', '$Bln AUM','6Bln','',''],

是我当前的输出和我想要改进的

代码如下:

df = pd.DataFrame(np.random.rand(8, 3),
                  index=[['Fund Name', 'Jerry Partners','', '', 'Fund Name','Boris LTD','',''],
                         ['$Bln AUM','2Bln','', '', '$Bln AUM','6Bln','',''],
                         ['Count', '21', ' ', ' ','Count','11', ' ', ' '], 
                        ['ticker1', 'ticker2', 'ticker3', 'ticker4', 'ticker1', 'ticker2', 'ticker3', 'ticker4']], 
                        columns=['%Own','Purchase Price','Tot Value'])
df
有没有其他方法可以将常规列放在多索引之前? 我不想重复“基金名称”、“10亿澳元”等,也不想让我的数据框架构建复杂化

\\\编辑:

下面是我正在争论的数据的更多信息。我希望这足够了。我收集了71只基金和它们各自的10大投资的股票

其中一些基金的投资不足10项,我认为这就是事情变得复杂的原因

我还有基金管理下的资产,对于每个股票代码,我都有拥有的金额和购买股票的价格。 根据这些信息,我有一个字典,其中键是基金名称,值是股票代码列表,如下所示:

{'AKO Capital':[array(['LIN','BKNG','EBAY','V','EL','GOOG','NKE','RACE','OTIS','PG','PG'],dtype=object)],'Ackman Trust:[array(['BRK.B','WM','CAT','CNI','WMT','ECL','CCI','FDX','UPS','SDGR dtype=object}
等等拥有的百分比和购买时的价格在不同的数组中。我想在这里创建以下多索引(点表示行之间):

我会很高兴让经理/股票报价人的级别工作起来,然后自己解决剩下的问题


谢谢。

您的数据以良好的形式进入具有正确索引的数据框

import pandas as pd
  
managers_tickers = {
    "AKO Capital": {
        "LIN": 0.25,
        "BKNG": 0.11,
        "EBAY": 0.13,
        "OTIS": 0.05,
        "PG": 0.035,
    },
    "Ackman Trust": {
        "BRK.B": 0.05,
        "WM": 0.15,
        "CAT": 0.12,
        "UPS": 0.05,
        "SDGR": 0.07,
    },
}

df = pd.DataFrame.from_dict(managers_tickers, orient="index").stack()

print(df)
上述印刷品:

AKO Capital   LIN      0.250
              BKNG     0.110
              EBAY     0.130
              OTIS     0.050
              PG       0.035
Ackman Trust  BRK.B    0.050
              WM       0.150
              CAT      0.120
              UPS      0.050
              SDGR     0.070
dtype: float64
您可以通过以下方式获得单个条目:

df["Ackman Trust"]["WM"]
# prints 0.15

哦,你绝对应该重复实际值,而不是用
''填充它们,
,因为用你目前的方法,熊猫绝对不知道
'Jerry Partners'
下的
'
应该与之分组。我可以保证,这将导致无数的错误和复杂的操作,而这些通常都是琐碎的操作。重复我的意思是,无论您如何获取数据,您也应该将这些信息与数据一起存储,这样您就可以创建这些列,然后创建一个简单的
。set_索引(['col1','col2',…])
为您提供多索引您可以提供数据来源的表格吗?即使它只是充满了随机值,看到它会更容易得到你想要的形式,而不是从你现在的位置开始。@ALollz,我已经添加了一些额外的信息。另外,我从两个列表创建了我的字典,一个是经理列表,一个是股票列表,所以我也有那个数据结构。当我使用.DataFrame(index=[dictionary.keys,dictionary.values])时,我得到一个2行的df,其中第1行是所有的管理器,第2行是所有的标记器。如何使用字典的键/值关系来确定管理者索引的长度,并将其各自的标记添加到每个管理者中作为第二级索引?如果我需要进一步澄清,请告诉我。感谢you@user1717828我已经更新了我的问题,这是否澄清了我的问题?请注意,我已经从两个列表中创建了一个字典,这样也可以使用。我想使用我的字典创建以下数据框架:Manager1有10个标记,因此我的多索引的第一级是Manager1的名称,第二级是10行,每行以标记命名。列包含与每个ticker关联的值。希望这能澄清。谢谢,谢谢。我还发现了我的另一个问题——谢谢你。
df["Ackman Trust"]["WM"]
# prints 0.15