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

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

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

标签:pandas,melt()方法

有时,我们可能需要将pandas数据框架从宽(wide)格式转换为长(long)格式,这可以通过使用melt方法轻松完成。本文通过一个简单的示例演示如何使用melt方法。

图1

考虑以下示例数据集:一个表,其中包含4个国家前6个月的销售数据。然后,我们的目标是将“宽”格式转换为“长”格式,如上图1所示。

import pandas as pd

import numpy as np

np.random.seed(0)

sales = pd.DataFrame({

'country':['Canada','UK','USA','Australia'],

'Jan':np.random.randint(1,100,size=(4)),

'Feb':np.random.randint(1,1000,size=(4)),

'Mar':np.random.randint(1,1000,size=(4)),

'Apr':np.random.randint(1,1000,size=(4)),

'May':np.random.randint(1,1000,size=(4)),

'Jun':np.random.randint(1,1000,size=(4)),

})

print(sales)

图2

melt()方法语法

pd.melt(dataframe, id_vars=None, value_vars=None, var_name=None, value_name=’value’, col_level=None, ignore_index=True)

其中,

  • id_vars:列名的列表/元组。这是为了指定要用作标识符变量的列。
  • value_vars:列名的列表/元组。要取消填充的列,留空意味着使用除id_vars之外的所有列。
  • var_name:字符串。“variable”列的列名。
  • value_name:字符串。”value”列的列名。

将pandas数据框架从宽格式转换为长格式

使用“country”列作为标识符变量id_vars。在第一行代码中,将value_vars留空,实际上是在说:使用除“country”之外的所有列。因此,它相当于下面的第二行代码。

pd.melt(sales, id_vars = 'country')

##下面的代码是等价的

pd.melt(sales, id_vars = 'country', value_vars = ['Jan','Feb','Mar','Apr','May','Jun'])

图3

结果看起来不错。但是,注意到列标题中的一个小问题——“variable”和“value”列的描述性不强。我们想把它们分别改为“Month”和“Sales”。

可以使用df.rename()方法来实现。然而,通过利用melt()方法里的var_name和value_name参数更容易。

pd.melt(sales, id_vars = 'country',var_name='Month',value_name='Sales')

图4

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

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

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

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

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

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