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

2024-05-19 02:09:15 发布

您现在位置:Python中文网/ 问答频道 /正文

This是我当前的输出,也是我想要改进的

代码如下:

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'], dtype=object)], 'Ackman Trust': [array(['BRK.B', 'WM', 'CAT', 'CNI', 'WMT', 'ECL', 'CCI', 'FDX', 'UPS','SDGR'], dtype=object)]} 等等拥有的百分比和购买时的价格在不同的数组中。我想在这里创建以下多索引(点表示行之间):

Manager    |Ticker |% Owned
AKO Capital|LIN    |25%
           |BKNG   |11%
           |EBAY   |13%
            ...........
           |OTIS   |5%
           |PG     |3.5%
AckmanTrust|BRK.B  |5%
           |WM     |15%
           |CAT    |12%
            ............
           |UPS    |5%
           |SGDR   |7%

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

多谢各位


Tags: 数据name名称信息df基金count股票
1条回答
网友
1楼 · 发布于 2024-05-19 02:09:15

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

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

相关问题 更多 >

    热门问题