【问题标题】:How do I insert a second level column and value into a Pandas DataFrame, whilst keeping it in line with the first level column?如何在 Pandas DataFrame 中插入第二级列和值,同时使其与第一级列保持一致?
【发布时间】:2020-05-13 23:03:34
【问题描述】:

以下代码创建了相关的 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.x pandas dataframe multi-index


    【解决方案1】:

    使用sort_index

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-05
      • 2017-12-21
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多