[Pandas] pandas.melt

melt是溶解 / 分解的意思,即拆分数据

melt()函数可以将一些列的内容进行合并,把宽表整合成长表

语法格式

pandas.melt(frame, 
            id_vars=None, 
            value_vars=None, 
            var_name=None, 
            value_name='value')

参数说明 

frame:要处理的数据集

id_vars:不需要被转换的列名

value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写

var_name:自定义设置variable列的列名

value_name:自定义设置value列的列名

导入数据

import pandas as pd

df = pd.DataFrame({"col1":[1,1,1,1,1],
                   "col2":[2,2,2,2,2],
                   "col3":["a","a","a","b","b"]})

df 

# 设置id_vars=['col1'],表示col1不需要转换
# 未设置value_vars值,则剩下的col2和col3都需要被转换
res1 = pd.melt(df, id_vars=['col1'])

res1

# 设置id_vars=['col1']和value_vars=['col3'],表示col1不需要转换,col3需要转换
res2 = pd.melt(df, id_vars=['col1'], value_vars=['col3'])

res2

# 设置var_name和value_name值,自定义设置修改后的列名
res3 = pd.melt(df, id_vars=['col1'], value_vars=['col3'],
               var_name='col4', value_name='col5')

res3

练习案例

import pandas as pd

df = pd.DataFrame({"Material":['08-0871-02','08-0960-04','12-0970-02','11-0721-01'],
                   "Description":['A123','B456','C789','D741'],
                   "68-101884-04":[0, 0, 0, 1],
                   "800-43712-12":[1, 1, 0, 0],
                   "73-20114-01":[0, 0, 0, 0]})

df

# 行列转换
bom_list = pd.melt(df, 
                   id_vars=["Material","Description"],
                   var_name="PN",
                   value_name="Usage")

bom_list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值