pandas函数之melt
1、melt方法
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
(1)参数
frame:处理的数据集
id_vars:tuple, list, or ndarray, optional。不需要转换的列名。
value_vars:tuple, list, or ndarray, optional。需要转换的列名,如果列全部都要转换,就不用写了。
var_name:需要转换列的名称。
value_name:值列的名称。
col_level:如果列是MultiIndex,则使用此级别。
ignore_index:bool型,默认为True。如果为True,则忽略原始索引。如果为False,则保留原始索引。
(2)举例
d = {'name':['alex','egon','tod'],'age':[17,18,19],'role':['ceo','editor','author']}
df = pd.DataFrame(d)
df_melt = pd.melt(df)
df_melt = pd.melt(df,id_vars='name')
d = {'name':['alex','egon','tod'],'age':[17,18,19],'role':['ceo','editor','author'],'city':['beijing','shanghai','shenzhen']}
df = pd.DataFrame(d)
df_melt = pd.melt(df,id_vars=['name','age'],value_vars='role',var_name='类别',value_name='角色')
(2)stack()
df = pd.DataFrame([[0, 1], [2, 3]],index=['cat', 'dog'],columns=['weight', 'height'])
df.stack()