當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pandas.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),在行軸上是 “unpivoted”,隻留下兩個非標識符列,‘variable’ and ‘value’。

參數

id_vars元組、列表或 ndarray,可選

用作標識符變量的列。

value_vars元組、列表或 ndarray,可選

要取消透視的列。如果未指定,則使用所有未設置為 id_vars 的列。

var_name標量

用於‘variable’ 列的名稱。如果沒有,它使用frame.columns.name 或‘variable’。

value_name標量,默認 ‘value’

用於‘value’ 列的名稱。

col_levelint 或 str,可選

如果列是 MultiIndex,則使用此級別來融化。

ignore_index布爾值,默認為真

如果為 True,則忽略原始索引。如果為 False,則保留原始索引。索引標簽將根據需要重複。

返回

DataFrame

未透視的 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’ and ‘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

如果您有 multi-index 列:

>>> 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

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.melt。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。