导入库
import pandas as pd
import numpy as np
函数melt
melt的主要参数:
pandas.melt(frame,
id_vars=None,
value_vars=None,
var_name=None,
value_name='value',
ignore_index=True,
col_level=None)
下面解释参数的含义:
frame:要处理的数据框DataFrame。
id_vars:表示不需要被转换的列名
value_vars:表示需要转换的列名,如果剩下的列全部都需要进行转换,则不必写
var_name和value_name:自定义设置对应的列名,相当于是取新的列名
igonore_index:是否忽略原列名,默认是True,就是忽略了原索引名,重新生成0,1,2,3,4…的自然索引
col_level:如果列是多层索引列MultiIndex,则使用此参数;这个参数少用
模拟数据
# 待转换的数据:frame
df = pd.DataFrame({"col1":[1,1,1,1,1],
"col2":[3,3,3,3,3],
"col3":["a","a","a","b","b"]
})
df
id_vars
value_vars
上面两个参数的同时使用:
image.png
同时转换多个列属性:
var_name和value_name
pd.melt(
df,
id_vars=["col1"], # 不变
value_vars=["col3"], # 转变
var_name="col4", # 新的列名
value_name="col5" # 对应值的新列名
)
ignore_index
默认情况下是生成自然索引:
可以改成False,使用原来的索引: