2017-06-16 168 views
0

我有数据帧,看起来像这样:重塑多列的熊猫数据帧

questions = ['What color?', 'What day?', 'How cold?', 'What color?', 'What color?'] 
category = ['Something1', 'Something2', 'Something1', 'Something2', 'something3'] 
answers = ['red', 'tuesday', '45', 'blue', 'red'] 
ids = [0, 1, 2, 3, 0] 
df = pd.DataFrame({'id': [0, 1, 2, 0, 0], 'questions': questions, 'answers': 
answers}) 

>>> id questions answers category 
    0 What color? red  Something1 
    1 What day? tuesday Something2 
    2 How cold? 45  Something1 
    0 What color? blue  Something2 
    0 What color? red  Something3 

我想按类别,编号重塑和问题得到这个:

How cold?|Something1 What color?|Something1 What color?|Something2 what color?|Something3 What day?|Something2 
id   
0   None     red      Blue      red     None 
1   None     None     None      None     tuesday 
2   45      None     None      None     None 

我已经尝试过这个前一个问题的类似想法:pandas: how to run a pivot with a multi-index?,但目前还没有运气。

回答

1

您正在寻找这样的事情:

df['questions'] = df.questions + '/' + df.category 

df1 = pd.pivot_table(df, values='answers', index='id',columns='questions', aggfunc='first') 

希望它可以帮助