我认为这是一个非常简单的问题。我是python的新手,我无法找到完美的答案。
我有一个数据框:
A B C D E
203704 WkDay 00:00 0.247 2015
203704 WkDay 00:30 0.232 2015
203704 Wkend 00:00 0.102 2015
203704 Wkend 00:30 0.0907 2015
203704 WkDay 00:00 0.28 2016
203704 WkDay 00:30 0.267 2016
203704 Wkend 00:00 0.263 2016
203704 Wkend 00:30 0.252 2016
我需要:
A B 00:00 00:30 E
203704 Wkday 0.247 0.232 2015
203704 Wkend 0.102 0.0907 2015
203704 Wkday 0.28 0.267 2016
203704 Wkday 0.263 0.252 2016
我浏览了this和this等各种链接。但是,实现它们我遇到了各种错误。
我能够成功运行
pandas.pivot_table(df,values='D',index='A',columns='C')
但它没有给出我想要的东西。
任何有关这方面的帮助都会有所帮助。
答案 0 :(得分:5)
您可以添加多个列作为参数index
的参数列出:
print (pd.pivot_table(df,index=['A', 'B', 'E'], columns='C',values='D').reset_index())
C A B E 00:00 00:30
0 203704 WkDay 2015 0.247 0.2320
1 203704 WkDay 2016 0.280 0.2670
2 203704 Wkend 2015 0.102 0.0907
3 203704 Wkend 2016 0.263 0.2520
如果需要更改列的顺序:
#reset only last level of index
df1 = pd.pivot_table(df,index=['A', 'B', 'E'], columns='C',values='D').reset_index(level=-1)
#reorder first column to last
df1.columns = df1.columns[-1:] | df1.columns[:-1]
#reset other columns
print (df1.reset_index())
C A B 00:00 00:30 E
0 203704 WkDay 2015 0.247 0.2320
1 203704 WkDay 2016 0.280 0.2670
2 203704 Wkend 2015 0.102 0.0907
3 203704 Wkend 2016 0.263 0.2520
答案 1 :(得分:2)