从另一个创建一个数据框(使用数据透视)

时间:2016-04-26 12:26:28

标签: python pandas dataframe

我遇到了大熊猫的问题。我有一个包含三列的数据框:' id1',' id2','金额'。

由此,我想创建另一个数据框,索引是' id1',哪些列是' id2',并且单元格包含相应的'金额' ;

让我们举个例子:

import pandas as pd
df = pd.DataFrame([['first_person','first_item',10],['first_person','second_item',6],['second_person','first_item',18],['second_person','second_item',36]],columns = ['id1','id2','amount'])

产生:

     id1              id2             amount
0    first_person     first_item      10
1    first_person     second_item     6
2    second_person    first_item      18
3    second_person    second_item     36

从此我想创建第二个数据框:

                 first_item    second_item
first_person     10            6
second_person    18            36

当然,在发布之前,我已经对它进行了一段时间的努力,但我为此设法做的只是一个双重的循环' ...我的数据帧的大小无处可计算。你会知道如何以更加pythonic的方式做到这一点吗? (这显然比'循环更有效!)

1 个答案:

答案 0 :(得分:4)

我认为您可以将pivotrename_axis一起使用(pandas 0.18.0中的新内容):

print df
             id1          id2  amount
0   first_person   first_item      10
1   first_person  second_item       6
2  second_person   first_item      18
3  second_person  second_item      36

print df.pivot(index='id1', columns='id2', values='amount')
        .rename_axis(None)
        .rename_axis(None, axis=1)

               first_item  second_item
first_person           10            6
second_person          18           36