如何从嵌套字典创建带有子列的数据框(多索引)?

时间:2019-04-02 15:20:54

标签: python pandas dataframe dictionary nested

我试图在一个列下创建两个子列。首先,我从字典创建了一个DataFrame

Destination = ['Milan', 'London','Lisbon','Milan','Mumbai', 'Lisbon', 'Porto', 'Lisbon']
Product_Revenue = [542,332,135,524,232, 522, 122, 122]

data_frame = {'Destination' : [i for i in Destination], 
                            'Revenue': [j for j in Product_Revenue]}
pd.DataFrame(data_frame)

第二,我想将Booking添加为主要列,以便DestinationRevenue成为其子列。但是我在索引中甚至是列表中都有DestinationRevenue

data_frame = {'Booking': {'Destination' : [i for i in Destination], 
                            'Revenue': [j for j in Product_Revenue]}}
pd.DataFrame(data_frame)
                             Booking

Destination    [Milan, London, Vienna, Milan, Mumbai, Paris, ...


Revenue     [542, 332, 135, 524, 232, 522, 122, 122]

DestinationRevenue在行中显示。

如何与上一个并行地写入两个值?

未来的目标是添加Users作为索引。因此,最终数据帧将是UserBooking的数据,其中DestinationPrice的值对于每个用户而言都是不同的。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这个问题有点令人困惑。如果您希望使用第一个级别为“ Booking”且第二个级别为“ [Destination,Revenue]”作为第二级的多索引来构建DF,则键应定义为元组:

Destination = ['Milan', 'London','Lisbon','Milan','Mumbai', 'Lisbon', 'Porto', 'Lisbon']
Product_Revenue = [542,332,135,524,232, 522, 122, 122]

data_frame = {('Booking', 'Destination') : Destination, 
              ('Booking', 'Revenue'): Product_Revenue}

pd.DataFrame(data_frame)

输出:

Booking
Destination Revenue
0   Milan   542
1   London  332
2   Lisbon  135
3   Milan   524
4   Mumbai  232
5   Lisbon  522
6   Porto   122
7   Lisbon  122