惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
雷峰网
雷峰网
量子位
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
T
Tailwind CSS Blog
月光博客
月光博客
博客园 - 【当耐特】
博客园_首页
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
爱范儿
爱范儿
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
人人都是产品经理
人人都是产品经理
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科 多款视频制作工具(免费)分享及素材推荐-互联网IT百科
pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科
2022-05-01 · via 老董笔记

  多行转多列和多列转多行是较为常见的操作,上一篇文章介绍了pandas多行变多列(即长表变宽表)操作,本文介绍pandas多列变多行(即宽表变长表)操作,分别用melt和stack来实现。

  1、利用melt函数实现多列变多行

DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)

  官方文档melt参数很多,但是我常用的也就4个。id_vars:代表选择作为行索引的列;value_vars:代表选择获取值的列;var_name:对value_vars重命名;value_name:对值所在的列重命名。空谈没感觉,用例子来展示。

# -*- coding:UTF-8 -*-
import pandas as pd   

df = pd.read_excel('11.xlsx')
print(df)
print('--------------')
df_res = df.melt(id_vars=['duankou'], value_vars=['bj','sh'])
print(df_res)
print('==============')
# 进行重命名
df_res = df.melt(id_vars=['duankou'], value_vars=['bj','sh'],var_name='city', value_name='num')
print(df_res)
  duankou    bj    sh    nj
0      pc  1000  1200  2000
1      mo  1500  1600  2500
--------------
  duankou variable  value
0      pc       bj   1000
1      mo       bj   1500
2      pc       sh   1200
3      mo       sh   1600
==============
  duankou city   num
0      pc   bj  1000
1      mo   bj  1500
2      pc   sh  1200
3      mo   sh  1600

  2、利用stack实现多列变多行

DataFrame.stack(level=- 1, dropna=True)

  对比melt函数可以发现,stack函数侧重于对索引层级的操作,如果是2重索引的df,则level=-1代表内层索引。我们拿双重索引的df来演示下。

# -*- coding:UTF-8 -*-
import pandas as pd   

import pandas as pd   

df = pd.read_excel('11.xlsx',index_col=[0],header=[0,1])
print(df)
df_res = df.stack(level=-1)
print(df_res)
           bj          sh          nj      
duankou   low  high   low  high   low  high
pc       1000  1100  2000  2100  3000  3100
mo       1500  1600  2500  2600  3500  3600
              bj    nj    sh
   duankou                  
pc high     1100  3100  2100
   low      1000  3000  2000
mo high     1600  3600  2600
   low      1500  3500  2500

  关于pandas多列变多行(即宽表变长表)的操作就介绍到这里,读者可以结合上一篇长表变宽表来集中学习理解。

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会