栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas melt() 的巧妙运用----逆透视

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas melt() 的巧妙运用----逆透视

如果希望把excel 中的长数据’压扁‘显示,就可以使用df.melt()方法,实现的为逆透视的过程。

import pandas as pd

df = pd.ExcelFile(r'C:UsersjackeyDesktopFL/inventory_summary_202109262031.xlsx')

df_new = pd.Dataframe()

for name in df.sheet_names:

    #获取每个Sheet的名称
    df_pre = df.parse(sheet_name=name)

    df_pre.rename(columns={'Unnamed: 0':'Lot'},inplace=True)

    # print(df_pre.columns)

    col=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]

    df_pre2=df_pre.melt(
        id_vars='Lot',
        value_vars=col,
        var_name='Wafer ID',
        value_name='数量',
    )

    df_pre2['品名']=name
    df_pre2 = df_pre2[['品名', 'Lot', 'Wafer ID', '数量']]

    df_pre2=df_pre2.convert_dtypes()

    # print(df_pre2.dtypes)

    df_pre2.sort_values(by=['Lot','Wafer ID'], ascending=[True,True],inplace=True)

    df_new = df_new.append(df_pre2)


df_new.dropna(subset=['数量'],inplace=True)

df_new=df_new[df_new['数量']!=0]

df_new.reset_index(drop=True,inplace=True)

df_new.to_excel(r'C:UsersjackeyDesktopFL/inventory_summary_20210930.xlsx',sheet_name='inventory_summary')

语法结构

具体语法结构如下:

pd.melt(frame: pandas.core.frame.Dataframe,
        id_vars=None, value_vars=None,
        var_name='variable', value_name='value',
        col_level=None)

其中:

  • id_varstuple,list或ndarray(可选),用作标识变量的列。
  • value_varstuple,列表或ndarray,可选,要取消透视的列。 如果未指定,则使用未设置为id_vars的所有列。
  • var_namescalar,用于“变量”列的名称。 如果为None,则使用frame.columns.name或“variable”。
  • value_namescalar,默认为“ value”,用于“ value”列的名称。
  • col_levelint或str,可选,如果列是MultiIndex,则使用此级别来融化。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号