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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
