我有一个多索引数据框,它看起来像这样(对不起图片,但我无法通过代码复制数据框):
产品相同,但顺序不同。价格需要分开。
我希望有一个单列用于产品,其他列作为价格,如下所示:
答案 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