Pandas DataFrame.unstack(~)
方法將指定的行級別轉換為列級別。這是 stack(~)
的相反。
參數
1.level
| int
或 string
或 list
等 | optional
要轉換為列級別的行級別的整數索引或名稱。默認為 level=-1
,表示轉換最內層的行級別。
2. fill_value
| int
或 string
或 dict
| optional
在生成的係列/數據幀中填充 NaN
的值。請注意,原始 DataFrame 中的 NaN
將不會被填充 - 隻有那些因該方法而出現的才會被填充。默認情況下,NaN
保持原樣。
返回值
Series
或 DataFrame
。
例子
拆垛single-level DataFrames
考慮以下single-level DataFrame:
df = pd.DataFrame({"age":[2,3],"height":[4,5]}, index=["alice","bob"])
df
age height
alice 2 4
bob 3 5
在 df
上調用 unstack()
給出:
df.unstack()
age alice 2
bob 3
height alice 4
bob 5
dtype: int64
在此,請注意以下事項:
-
返回類型為
Series
,有兩個級別。 -
df
中的行標簽和列標簽已合並形成多索引。
將 DataFrames 與 multi-level 行拆垛
考慮以下帶有multi-level行的DataFrame:
index = [("A","alice"), ("A","bob"),("B","cathy"),("B","david")]
multi_index = pd.MultiIndex.from_tuples(index)
df = pd.DataFrame({"age":[2,3,4,5],"height":[6,7,8,9]}, index=multi_index)
df
age height
A alice 2 6
bob 3 7
B cathy 4 8
david 5 9
默認情況下, level=-1
,這意味著最裏麵的行級別 ( [alice,bob,cathy,david]
) 將轉換為列級別:
df.unstack()
age height
alice bob cathy david alice bob cathy david
A 2.0 3.0 NaN NaN 6.0 7.0 NaN NaN
B NaN NaN 4.0 5.0 NaN NaN 8.0 9.0
請注意以下事項:
-
最裏麵的行級別(
[alice, bob, cathy, david]
)變成了列級別,並且定位為最裏麵的級別。 -
使用 multi-levels 堆疊列通常會產生許多
NaN
,因為例如,不存在有關組B
中的alice
的age
的數據。
要指定要轉換的級別,請傳遞 level
參數,如下所示:
df.unstack(level=0)
age height
A B A B
alice 2.0 NaN 6.0 NaN
bob 3.0 NaN 7.0 NaN
cathy NaN 4.0 NaN 8.0
david NaN 5.0 NaN 9.0
這裏,level=0
表示最外層行級別([A,B]
)被轉換為列級別。
指定fill_value
默認情況下, fill_value=None
,這意味著生成的 Series/DataFrame 中的 NaN
保持原樣。
要使用值填充所有 NaN
,請傳入 fill_value
,如下所示:
df.unstack(level=0, fill_value="@")
age height
A B A B
alice 2 @ 6 @
bob 3 @ 7 @
cathy @ 4 @ 8
david @ 5 @ 9
請注意,原始 DataFrame 中預先存在的 NaN
將不會被填充 - 隻有由該出棧過程引起的那些才會被 fill_value
填充。
相關用法
- Python PySpark DataFrame unionByName方法用法及代碼示例
- Python PySpark DataFrame union方法用法及代碼示例
- Python Pandas DataFrame update方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
- 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 mean方法用法及代碼示例
- Python PySpark DataFrame filter方法用法及代碼示例
- Python Pandas DataFrame tz_convert方法用法及代碼示例
- Python Pandas DataFrame isin方法用法及代碼示例
- Python PySpark DataFrame collect方法用法及代碼示例
- Python PySpark DataFrame intersect方法用法及代碼示例
- Python PySpark DataFrame dtypes屬性用法及代碼示例
- Python Pandas DataFrame rank方法用法及代碼示例
- Python Pandas DataFrame tail方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | unstack method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。