Python 添加更高级别的列多索引
我正在寻找一种在pandas中添加更高级别的列索引的方法 我有一个多索引数据帧,如下所示:Python 添加更高级别的列多索引,python,pandas,pivot,multi-index,Python,Pandas,Pivot,Multi Index,我正在寻找一种在pandas中添加更高级别的列索引的方法 我有一个多索引数据帧,如下所示: >>>df product A B C sell_buy sell buy sell buy sell buy group company 1 Bank X 100 50 200 10 20 20 2 Bank Y 20 40 150 40 30
>>>df
product A B C
sell_buy sell buy sell buy sell buy
group company
1 Bank X 100 50 200 10 20 20
2 Bank Y 20 40 150 40 30 20
3 Bank Z 100 20 20 10 40 10
我想在company
的列中添加一个更高级别的索引,并用今天的日期设置一个行索引(使用类似于datetime.today()
)
我尝试了好几次,但我不知道如何让它工作
pd.MultiIndex.from_product([df.columns.levels, ['Bank X']])
pd.MultiIndex.from_product([df.columns.levels, ['product']])
任何帮助都将不胜感激。谢谢大家! 我相信您需要在第一步中将第一级转换为
日期
值,然后通过重塑,以及:
什么是
print(df.index[:3].tolist())
?这是[(1,'Bank X'),(2,'Bank Y'),(3,'Bank Z')]
再次感谢@jezrael!它非常适合我的需要。我需要更多的练习来处理这些多重指标。。
pd.MultiIndex.from_product([df.columns.levels, ['Bank X']])
pd.MultiIndex.from_product([df.columns.levels, ['product']])
date = pd.Timestamp('today').floor('d')
df.index = pd.MultiIndex.from_product([[date], df.index.get_level_values(1)])
df = df.unstack().reorder_levels([2,0,1], axis=1).sort_index(axis=1)
print (df)
company Bank X Bank Y Bank Z \
product A B C A B C A
sell_buy buy sell buy sell buy sell buy sell buy sell buy sell buy
2020-08-15 50 100 10 200 20 20 40 20 40 150 20 30 20
company
product B C
sell_buy sell buy sell buy sell
2020-08-15 100 10 20 10 40