dask_expr._collection.DataFrame.melt

dask_expr._collection.DataFrame.melt

DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)[源代码]

将DataFrame从宽格式透视为长格式,可以选择保留标识符集。

此文档字符串是从 pandas.core.frame.DataFrame.melt 复制的。

Dask 版本可能存在一些不一致性。

此函数用于将一个 DataFrame 转换为一种格式,其中一个或多个列是标识变量(id_vars),而所有其他列,被视为测量变量(value_vars),被“逆透视”到行轴上,仅留下两列非标识列,即 ‘variable’ 和 ‘value’。

参数
id_vars标量, 元组, 列表, 或 ndarray, 可选

用作标识符变量的列。

value_vars标量, 元组, 列表, 或 ndarray, 可选

要取消透视的列。如果未指定,则使用未设置为 id_vars 的所有列。

变量名标量,默认 None

用于 ‘变量’ 列的名称。如果为 None,则使用 frame.columns.name 或 ‘变量’。

value_name标量,默认 ‘value’

用于 ‘value’ 列的名称,不能是现有列的标签。

col_level标量,可选

如果列是 MultiIndex,则使用此级别进行熔化。

忽略索引bool, 默认 True (Dask 不支持)

如果为 True,则忽略原始索引。如果为 False,则保留原始索引。索引标签将根据需要重复。

返回
DataFrame

未透视的 DataFrame。

参见

melt

相同的方法。

pivot_table

创建一个电子表格样式的数据透视表作为DataFrame。

DataFrame.pivot

返回按给定索引/列值组织的重塑后的DataFrame。

DataFrame.explode

将 DataFrame 从列表类列展开为长格式。

注释

参考 用户指南 获取更多示例。

示例

>>> df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},  
...                    'B': {0: 1, 1: 3, 2: 5},
...                    'C': {0: 2, 1: 4, 2: 6}})
>>> df  
   A  B  C
0  a  1  2
1  b  3  4
2  c  5  6
>>> df.melt(id_vars=['A'], value_vars=['B'])  
   A variable  value
0  a        B      1
1  b        B      3
2  c        B      5
>>> df.melt(id_vars=['A'], value_vars=['B', 'C'])  
   A variable  value
0  a        B      1
1  b        B      3
2  c        B      5
3  a        C      2
4  b        C      4
5  c        C      6

可以自定义 ‘variable’ 和 ‘value’ 列的名称:

>>> df.melt(id_vars=['A'], value_vars=['B'],  
...         var_name='myVarname', value_name='myValname')
   A myVarname  myValname
0  a         B          1
1  b         B          3
2  c         B          5

原始索引值可以保留:

>>> df.melt(id_vars=['A'], value_vars=['B', 'C'], ignore_index=False)  
   A variable  value
0  a        B      1
1  b        B      3
2  c        B      5
0  a        C      2
1  b        C      4
2  c        C      6

如果你有多重索引列:

>>> df.columns = [list('ABC'), list('DEF')]  
>>> df  
   A  B  C
   D  E  F
0  a  1  2
1  b  3  4
2  c  5  6
>>> df.melt(col_level=0, id_vars=['A'], value_vars=['B'])  
   A variable  value
0  a        B      1
1  b        B      3
2  c        B      5
>>> df.melt(id_vars=[('A', 'D')], value_vars=[('B', 'E')])  
  (A, D) variable_0 variable_1  value
0      a          B          E      1
1      b          B          E      3
2      c          B          E      5