我遇到了大熊猫的问题。我有一个包含三列的数据框:' 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的方式做到这一点吗? (这显然比'循环更有效!)
答案 0 :(得分:4)
我认为您可以将pivot
与rename_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