首页 > 解决方案 > 合并多索引数据框中的列

问题描述

我有一个看起来像这样的多索引数据框(对不起图片,但我无法通过代码复制数据框):

示例数据框

产品相同,但顺序不同。价格需要分开。

我想有一个产品列,其他列是价格,如下所示:

示例所需的数据框

标签: pythonpandas

解决方案


这是创建 multiIndex 数据框的一种方法。

tuples = list(zip(*[
    ["a","a","b","b","c","c"],
    ["product","price","product","price","product","price"],
]))
columns = pd.MultiIndex.from_tuples(tuples)
df = pd.DataFrame(
    [['apple', 1, 'oranges', 2, 'bananas', 1],
    ['oranges', 4, 'bananas', 3, 'oranges', 2],
    ['bananas', 5, 'apple', 4, 'apple', 3]],
columns=columns)
df

输入

    a              b                 c
  product   price   product price   product price
0   apple   1     oranges   2       bananas 1
1   oranges 4     bananas   3       oranges 2
2   bananas 5     apple     4       apple   3

代码

df = df.stack(0).reset_index(1).pivot(
    columns='level_1', index='product').reset_index()
df.columns = df.columns.droplevel(0).rename(None)
df

输出

            a   b   c
0   apple   1   4   3
1   bananas 5   3   1
2   oranges 4   2   2

推荐阅读