在多个列上重塑pandas数据框

时间:2017-06-16 15:55:14

标签: python pandas

我的数据框看起来像这样:

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

我正在尝试按类别,ID和问题进行重新设计以实现此目的:

    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 个答案:

答案 0 :(得分:1)

你在寻找这样的东西:

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

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

希望有所帮助