合并多索引数据帧内的列

时间:2021-04-27 22:29:53

标签: python pandas

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

example dataframe

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

我希望有一个单列用于产品,其他列作为价格,如下所示:

example desired dataframe

1 个答案:

答案 0 :(得分:2)

这是创建多索引数据框的一种方法。

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
相关问题