用法:
DataFrame.stack(level=- 1, dropna=True)
將列中的規定級別堆疊到索引。
返回與當前 DataFrame 相比具有一個或多個新的 inner-most 級別的 multi-level 索引的重塑 DataFrame 或 Series。新的inner-most 級別是通過旋轉當前 DataFrame 的列來創建的:
if the columns have a single level, the output is a Series;
if the columns have multiple levels, the new index level(s) is (are) taken from the prescribed level(s) and the output is a DataFrame.
- level:int, str, list, 默認 -1
從列軸堆疊到索引軸的級別,定義為一個索引或標簽,或者索引或標簽的列表。
- dropna:布爾值,默認為真
是否刪除結果幀/係列中缺少值的行。將列級別堆疊到索引軸上可以創建原始數據幀中缺少的索引和列值的組合。請參閱示例部分。
- DataFrame 或係列
堆疊的 DataFrame 或係列。
參數:
返回:
注意:
該函數的命名類似於將書籍集合從水平位置並排( DataFrame 的列)重新組織到彼此垂直堆疊(在 DataFrame 的索引中)。
有關更多示例,請參閱用戶指南。
例子:
單層柱
>>> df_single_level_cols = pd.DataFrame([[0, 1], [2, 3]], ... index=['cat', 'dog'], ... columns=['weight', 'height'])
用單層列軸堆疊 DataFrame 會返回一個係列:
>>> df_single_level_cols weight height cat 0 1 dog 2 3 >>> df_single_level_cols.stack() cat weight 0 height 1 dog weight 2 height 3 dtype:int64
多級列:簡單案例
>>> multicol1 = pd.MultiIndex.from_tuples([('weight', 'kg'), ... ('weight', 'pounds')]) >>> df_multi_level_cols1 = pd.DataFrame([[1, 2], [2, 4]], ... index=['cat', 'dog'], ... columns=multicol1)
使用 multi-level 列軸堆疊 DataFrame :
>>> df_multi_level_cols1 weight kg pounds cat 1 2 dog 2 4 >>> df_multi_level_cols1.stack() weight cat kg 1 pounds 2 dog kg 2 pounds 4
缺失值
>>> multicol2 = pd.MultiIndex.from_tuples([('weight', 'kg'), ... ('height', 'm')]) >>> df_multi_level_cols2 = pd.DataFrame([[1.0, 2.0], [3.0, 4.0]], ... index=['cat', 'dog'], ... columns=multicol2)
在使用multi-level 列堆疊數據幀時,通常會出現缺失值,因為堆疊的數據幀通常比原始數據幀具有更多的值。缺失值用 NaN 填充:
>>> df_multi_level_cols2 weight height kg m cat 1.0 2.0 dog 3.0 4.0 >>> df_multi_level_cols2.stack() height weight cat kg NaN 1.0 m 2.0 NaN dog kg NaN 3.0 m 4.0 NaN
規定要堆疊的級別
第一個參數控製堆疊的級別:
>>> df_multi_level_cols2.stack(0) kg m cat height NaN 2.0 weight 1.0 NaN dog height NaN 4.0 weight 3.0 NaN >>> df_multi_level_cols2.stack([0, 1]) cat height m 2.0 weight kg 1.0 dog height m 4.0 weight kg 3.0 dtype:float64
刪除缺失值
>>> df_multi_level_cols3 = pd.DataFrame([[None, 1.0], [2.0, 3.0]], ... index=['cat', 'dog'], ... columns=multicol2)
請注意,默認情況下會刪除所有值缺失的行,但可以通過 dropna 關鍵字參數控製此行為:
>>> df_multi_level_cols3 weight height kg m cat NaN 1.0 dog 2.0 3.0 >>> df_multi_level_cols3.stack(dropna=False) height weight cat kg NaN NaN m 1.0 NaN dog kg NaN 2.0 m 3.0 NaN >>> df_multi_level_cols3.stack(dropna=True) height weight cat m 1.0 NaN dog kg NaN 2.0 m 3.0 NaN
相關用法
- Python pandas.DataFrame.std用法及代碼示例
- Python pandas.DataFrame.sparse.from_spmatrix用法及代碼示例
- Python pandas.DataFrame.select_dtypes用法及代碼示例
- Python pandas.DataFrame.size用法及代碼示例
- Python pandas.DataFrame.subtract用法及代碼示例
- Python pandas.DataFrame.set_index用法及代碼示例
- Python pandas.DataFrame.sort_index用法及代碼示例
- Python pandas.DataFrame.shape用法及代碼示例
- Python pandas.DataFrame.swaplevel用法及代碼示例
- Python pandas.DataFrame.sub用法及代碼示例
- Python pandas.DataFrame.sort_values用法及代碼示例
- Python pandas.DataFrame.shift用法及代碼示例
- Python pandas.DataFrame.set_flags用法及代碼示例
- Python pandas.DataFrame.sparse.to_dense用法及代碼示例
- Python pandas.DataFrame.squeeze用法及代碼示例
- Python pandas.DataFrame.sample用法及代碼示例
- Python pandas.DataFrame.set_axis用法及代碼示例
- Python pandas.DataFrame.sum用法及代碼示例
- Python pandas.DataFrame.ewm用法及代碼示例
- Python pandas.DataFrame.dot用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.stack。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。