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