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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。