DataFrame.melt
DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name=’value’, col_level=None, ignore_index=True)
将DataFrame从宽格式转为长格式。
此函数可用于将DataFrame转换为一种格式,其中一列或多列是标识符变量(id_vars),而其他所有列,被视为测量变量(value_vars)。
Parameters
id_vars | 用作标识符变量的列 |
---|---|
value_vars | 要取消旋转的列。如果未指定,则使用所有未设置为id_vars的列。 |
var_name | 用于“变量”列的名称。 |
value_name | 用于“值”列的名称。 |
col_level | 如果列是MultiIndex,则使用此级别来融合。 |
ignore_index | True:忽略原始索引;False:保留原始索引 |
Example
import pandas as pd
df = pd.DataFrame({'site':['google', 'baidu', 'wiki'],
'age':[18, 39, 22],
'price': [1.0, 2.0, 3.0],
'color': ['red', 'black', None]})
df.melt(id_vars=['site'], value_vars=['age'])
---------------------------------------------------------
site variable value
0 google age 18
1 baidu age 39
2 wiki age 22
Example
import pandas as pd
df = pd.DataFrame({'site':['google', 'baidu', 'wiki'],
'age':[18, 39, 22],
'price': [1.0, 2.0, 3.0],
'color': ['red', 'black', None]})
df.melt(id_vars=['site'], value_vars=['age', 'price'])
-------------------------------------------------------------
site variable value
0 google age 18.0
1 baidu age 39.0
2 wiki age 22.0
3 google price 1.0
4 baidu price 2.0
5 wiki price 3.0
Example
import pandas as pd
df = pd.DataFrame({'site':['google', 'baidu', 'wiki'],
'age':[18, 39, 22],
'price': [1.0, 2.0, 3.0],
'color': ['red', 'black', None]})
df.melt(id_vars=['site'], value_vars=['age'], var_name='variable_name', value_name='value_name')
----------------------------------------------------------------------
site variable_name value_name
0 google age 18
1 baidu age 39
2 wiki age 22
Example
import pandas as pd
df = pd.DataFrame({'site':['google', 'baidu', 'wiki'],
'age':[18, 39, 22],
'price': [1.0, 2.0, 3.0],
'color': ['red', 'black', None]})
df.melt(id_vars=['site'], value_vars=['age', 'price'], ignore_index=False)
----------------------------------------------------------------------------
site variable value
0 google age 18.0
1 baidu age 39.0
2 wiki age 22.0
0 google price 1.0
1 baidu price 2.0
2 wiki price 3.0