我有熊猫数据框:
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
我可以直接使用任何方法或函数来获得所需的结果吗?
答案 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