首页 > 解决方案 > 如何在 Pandas DataFrame 中插入第二级列和值,同时使其与第一级列保持一致?

问题描述

下面的代码创建了相关的 Pandas DataFrame:

import pandas as pd

columns_index = pd.MultiIndex.from_arrays([['Apple','Apple','Banana'], ['Light_Green','Red','Yellow']])
df = pd.DataFrame(data=None,columns=columns_index,index=[1])
df.loc[:,('Apple','Light_Green')] = 10
df.loc[:,('Apple','Red')] = 0
df.loc[:,('Banana','Yellow')] = 5


    Apple           Banana
    Light Green Red Yellow
1   10          0   5

然后我运行以下代码来插入一个新值(以及一个新的第一级列标题到 DataFrame 中):

df.loc[:,('Apple','Dark_Green')] = 1

但是,这会生成一个 DataFrame,其中的数据排序如下:

    Apple           Banana  Apple
    Light_Green Red Yellow  Dark_Green
1   10          0   5       1.0

如何以最 Pythonic 的方式将此值(和新的第一级列标题)插入 DataFrame 并确保 Dark_Green 标题在 Apple 类别内,以便 DataFrame 如下所示:

    Apple                       Banana
    Light_Green Red Dark_Green  Yellow
1   10          0   1           5

是否有不同的方法用于插入数据,或者这种方法是否可以,在最佳方法之后部署了某种代码来重新排序 DataFrame?

注意:我特别需要反复动态调整 DataFrame,因此从一开始就使用 Dark_Green 标头创建 DataFrame 不是解决方案。

谢谢!

标签: python-3.xpandasdataframemulti-index

解决方案


sort_index

df=df.sort_index(level=0,axis=1)
       Apple                 Banana
  Dark_Green Light_Green Red Yellow
1        1.0          10   0      5

推荐阅读