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