Pandas DataFrame.melt(~)
方法將源 DataFrame 的格式從"wide"到"long".
讓我們看一個簡單的例子。考慮以下 DataFrame :
名字 |
年齡 |
高度 |
---|---|---|
alex |
40 |
150 |
bob |
50 |
160 |
這被認為是一個"wide"DataFrame 因為每一行都捕獲有關該人的所有相關數據。現在,將其轉換為"long" DataFrame :
名字 |
變量 |
值 |
---|---|---|
alex |
age |
30 |
alex |
height |
150 |
bob |
age |
50 |
bob |
height |
160 |
現在,每一行捕獲有關該人的單個變量,這不可避免地會導致垂直"long" DataFrame 。
Pandas 使用這個術語"unpivot"表示基於變量延長 DataFrame 的操作。在這個例子中,我們是不旋轉變量age
和height
.
參數
1.id_vars
| tuple
或 list
或 Numpy array
| optional
用作標識符的列的標簽。
2. value_vars
| tuple
或 list
或 Numpy array
| optional
要取消透視的列的標簽。默認情況下,所有列都將取消透視。
3. var_name
| scalar
| optional
變量列的標簽。默認情況下,var_name="variable"
。
4. value_name
| scalar
| optional
值列的標簽。默認情況下,value_name="value"
。
5. col_level
| int
或 string
| optional
執行該方法的級別。這僅與多索引列相關。
返回值
已取消透視的DataFrame。
例子
考慮以下 DataFrame :
df = pd.DataFrame({"name":["alex","bob","cathy"], "age":[40,50,60], "height":[150,160,170]})
df
name age height
0 alex 40 150
1 bob 50 160
2 cathy 60 170
基本用法
這裏,標識符列是 name
,要取消透視的列是 age
和 height
:
df.melt(id_vars="name", value_vars=["age","height"])
name variable value
0 alex age 40
1 bob age 50
2 cathy age 60
3 alex height 150
4 bob height 160
5 cathy height 170
在這裏,我們實際上可以省略 value_vars
參數,因為默認情況下,除了標識符列 ( name
) 之外的所有列都將被取消透視。
指定value_vars
假設我們隻想取消透視一列而不是兩列。我們可以使用 value_vars
參數簡單地指定要取消透視的列:
df.melt(id_vars="name", value_vars="age")
name variable value
0 alex age 40
1 bob age 50
2 cathy age 60
請注意 height
列是如何被剝離的。如果我們想保留高度列,我們必須將其包含在 id_vars
參數中,如下所示:
df.melt(id_vars=["name","height"], value_vars="age")
name height variable value
0 alex 150 age 40
1 bob 160 age 50
2 cathy 170 age 60
指定var_name和value_name
在這裏,我們再次展示df
供您參考:
df
name age height
0 alex 40 150
1 bob 50 160
2 cathy 60 170
正如我們在上麵的示例中看到的,新的列標簽默認為 "variable"
和 "value"
,我們可以通過指定 var_name
和 value_name
來更改它,如下所示:
df.melt(id_vars="name", var_name="attribute", value_name="number")
name attribute number
0 alex age 40
1 bob age 50
2 cathy age 60
3 alex height 150
4 bob height 160
5 cathy height 170
相關用法
- Python Pandas DataFrame mean方法用法及代碼示例
- Python Pandas DataFrame memory_usage方法用法及代碼示例
- Python Pandas DataFrame merge方法用法及代碼示例
- Python Pandas DataFrame median方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
- Python Pandas DataFrame mod方法用法及代碼示例
- Python Pandas DataFrame mode方法用法及代碼示例
- Python Pandas DataFrame mask方法用法及代碼示例
- Python Pandas DataFrame min方法用法及代碼示例
- Python Pandas DataFrame mad方法用法及代碼示例
- Python Pandas DataFrame mul方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python Pandas DataFrame agg方法用法及代碼示例
- Python Pandas DataFrame copy方法用法及代碼示例
- Python Pandas DataFrame pow方法用法及代碼示例
- Python Pandas DataFrame insert方法用法及代碼示例
- Python Pandas DataFrame lt方法用法及代碼示例
- Python Pandas DataFrame all方法用法及代碼示例
- Python Pandas DataFrame unstack方法用法及代碼示例
- Python PySpark DataFrame filter方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | melt method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。