前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas基础:数据显示格式转换(续)

pandas基础:数据显示格式转换(续)

作者头像
fanjy
发布2022-11-16 10:35:21
1.2K0
发布2022-11-16 10:35:21
举报
文章被收录于专栏:完美Excel

标签:pandas,pivot()方法

在《pandas基础:数据显示格式转换》中,我们使用melt()方法将数据框架从宽(wide)格式转换为长(long)格式。然而,如果要将数据框架从长格式转换为宽格式呢?如下图1所示。

图1

可以使用pandas的pivot()方法。下面通过一个简单的示例演示如何使用它。

对于经常使用Excel的用户来说,马上就知道可以通过使用透视表函数来实现这一点。基本上,将country列放在“行”中,将Month放在“列”中,然后将Sales作为“价值”放入表中。这里的好消息是,pandas中也有一个pivot函数。

下面的代码将创建一个“长”表单数据框架,看起来像上图1中左侧的表。

import pandas as pd

import numpy as np

np.random.seed(0)

months = (['Jan','Feb','Mar','Apr','May','Jun'] * 4)

months.sort()

long_df = pd.DataFrame({

'Country':['Canada','UK','USA','Australia'] * 6,

'Month':months,

'Sales':np.random.randint(1,1000,size=24)

})

结果如下图2所示。

图2

pandas的pivot方法的语法如下:

pandas.DataFrame.pivot(index=None, columns=None, values=None)

其中:

  • index:字符串,或字符串值列表。这是新数据框架的索引,相当于Excel数据透视表的“行”。
  • columns:字符串,或字符串值列表。这是新数据框架的列,相当于Excel数据透视表的“列”。
  • values:字符串,或字符串值列表。用于新数据框架列填充的值,相当于Excel数据透视表的“值”。

现在来实现数据格式的转换。注意,下面两行代码将返回相同的结果。然而,首选第二行代码,因为它更明确地说明了参数的用途。记住,“显性比隐性更好。”

long_df.pivot(index='Country',columns='Month')

long_df.pivot(index='Country',columns='Month',values='Sales')

图3

上面的结果有点不完美——列名是按字母顺序自动排序的,而不是按月份顺序。

有一个简单的修复方法,只需更改列顺序。实际上,可以将这个部分代码与pivot方法链接到一行代码中。

long_df.pivot(index='Country', columns='Month',values='Sales')[['Jan','Feb','Mar','Apr','May','Jun']]

图4

注:本文学习整理自pythoninoffice.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档