Python 从具有不同结构的dataframe添加列

Python 从具有不同结构的dataframe添加列,python,pandas,Python,Pandas,我有以下两种数据帧结构: roc_100 max min industry Banks Health Banks Health date 2015-03-15 3456 456 345 567 2015-03-16 6576 565 435 677 2015-03-17 5478 657 245 1

我有以下两种数据帧结构:

            roc_100
            max                 min
industry    Banks     Health    Banks   Health
date
2015-03-15  3456      456       345     567
2015-03-16  6576      565       435     677
2015-03-17  5478      657       245     123
以及:

可以看出,这两个数据帧之间的区别在于底部的数据帧没有“行业”。但数据帧结构的其余部分是相同的,即:它的左边也有日期,并按roc_100分组,下面是max和min

我需要做的是将底部数据框中的列添加到顶部数据框中,并为添加的列指定一个行业名称,例如:“benchmark”。生成的数据帧应如下所示:

            roc_100
            max                              min
industry    Banks     Health    Benchmark    Banks   Health    Benchmark
date
2015-03-15  3456      456       546          345     567       7856
2015-03-16  6576      565       677          435     677       456
2015-03-17  5478      657       3546         245     123       346
我尝试过使用append和join,但到目前为止这两个选项都不起作用,因为一个数据帧有一个“行业”,而另一个没有

编辑:

我已成功使用以下方法将它们正确合并:

industry_df = industry_df.merge(benchmark_df, how='inner', left_index=True, right_index=True)
现在唯一的问题是,新添加的专栏仍然没有“行业”

这意味着,如果我只想要一个行业,例如:健康,那么我可以:

print(industry_df['roc_100', 'max', 'Health'])
这是可行的,但是如果我想打印所有的行业,包括新增加的专栏,我不能这样做。如果我尝试:

print(industry_df['roc_100', 'max'])

这只打印出新添加的列,因为它们是唯一没有“行业”的列。是否有办法为这些新合并的列命名(“行业”)?

您可以使用stack()和unstack()将两个数据帧带到相同的索引结构中,其中行业作为列。然后分配新的基准列。最后一步-通过相同的stack()和unstack()恢复初始索引/列结构。

您可以使用stack()和unstack()将两个数据帧带到相同的索引结构中,并将行业作为列。然后分配新的基准列。最后一步-使用相同的stack()和unstack()恢复初始索引/列结构。

查看该命令-它的功能非常广泛,让您选择要在左侧和右侧合并哪些列,索引与否;还有如何处理合并列。谢谢@AmiTavory,我已经成功地将它们正确合并,但遇到了一个问题。请看我对原始问题的编辑。谢谢你。一般来说,一旦你有了一个你想要的形状的数据框,事情就好了
df.columns
只是一个常规的Python列表,您可以按照任何方式重命名这些列。元组列表使其具有多层次性;还有如何处理合并列。谢谢@AmiTavory,我已经成功地将它们正确合并,但遇到了一个问题。请看我对原始问题的编辑。谢谢你。一般来说,一旦你有了一个你想要的形状的数据框,事情就好了
df.columns
只是一个常规的Python列表,您可以按照任何方式重命名这些列。元组列表使其具有多层次性;还有如何处理合并列。谢谢@AmiTavory,我已经成功地将它们正确合并,但遇到了一个问题。请看我对原始问题的编辑。谢谢你。一般来说,一旦你有了一个你想要的形状的数据框,事情就好了
df.columns
只是一个常规的Python列表,您可以按照任何方式重命名这些列。元组列表使其具有多层次性。
print(industry_df['roc_100', 'max'])