加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中从long转换为wide

发布时间:2020-12-20 11:53:04 所属栏目:Python 来源:网络整理
导读:我认为这是一个非常简单的问题.我是 python的新手,我无法找到完美的答案. 我有一个数据帧: A B C D E203704 WkDay 00:00 0.247 2015203704 WkDay 00:30 0.232 2015203704 Wkend 00:00 0.102 2015203704 Wkend 00:30 0.0907 2015203704 WkDay 00:00 0.28 201
我认为这是一个非常简单的问题.我是 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')

但它没有给出我想要的东西.

对此有任何帮助会有所帮助.

解决方法

您可以添加多列列表作为参数索引的参数:

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,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读