多行熊猫数据框到多列

时间:2018-08-07 21:59:43

标签: pandas dataframe pivot

我有熊猫数据框:

d2 = {'F': ['apple', 'grap','figs'], 'score': [10,20,15],'week': [1,1,1]}
df2 = pd.DataFrame(data=d2)

d1 = {'F': ['apple', 'grap','figs'], 'score': [20,30,35],'week': [2,2,2]}
df1 = pd.DataFrame(data=d1)

df=pd.concat([df1,df2])

     F  score   week
0   apple   20  2
1   grap    30  2
2   figs    35  2
0   apple   10  1
1   grap    20  1
2   figs    15  1

我希望每个F名称都像列一样( 这是理想的结果 ):

week  apple grap figs 
1      20    30   35   
2      10    20   15   

我尝试了set_index:

print (df.set_index('F').T)

但是结果不是我想要的:

F      apple  grap  figs  apple  grap  figs
score     20    30    35     10    20    15
week       2     2     2      1     1     1

我可以直接使用任何方法或函数来获得所需的结果吗?

2 个答案:

答案 0 :(得分:1)

编辑以处理具有新预期结果的更新问题:

df.pivot('week','F','score').reset_index()

输出:

F  week  apple  figs  grap
0     1     10    15    20
1     2     20    35    30

使用sort_values

df.sort_values(['F','week']).reset_index(drop=True)

输出:

       F  score  week
0  apple     10     1
1  apple     20     2
2   figs     15     1
3   figs     35     2
4   grap     20     1
5   grap     30     2

答案 1 :(得分:0)

排序后,可以使用.T,Transpose函数获得所需的输出。

newdf=df.sort_values(['F','week']).T

输出

F      apple  apple  figs  figs  grap  grap
score     10    20    15     35    20    30
week       1     2     1      2     1     2