maxframe.dataframe.DataFrame.pivot#
- DataFrame.pivot(columns, index=None, values=None)#
返回按给定索引/列值组织的重塑 DataFrame。
根据列值重塑数据(生成“透视”表)。使用指定 index / columns 的唯一值来构成结果 DataFrame 的轴。此函数不支持数据聚合,多个值将导致列中出现 MultiIndex。有关重塑的更多信息,请参见 用户指南。
- 参数:
- 返回:
返回重塑后的 DataFrame。
- 返回类型:
- 抛出:
ValueError: -- 当存在任何具有多个值的 index、columns 组合时。如果需要聚合,请使用 DataFrame.pivot_table。
参见
DataFrame.pivot_table透视表的泛化形式,可以处理一个索引/列对的重复值。
DataFrame.unstack基于索引值而不是列进行透视。
wide_to_long宽格式面板转为长格式。比 melt 更少灵活性但更友好。
备注
如需更精细的控制,请参阅层次索引文档以及相关的 stack/unstack 方法。
示例
>>> import maxframe.dataframe as md >>> df = md.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two', ... 'two'], ... 'bar': ['A', 'B', 'C', 'A', 'B', 'C'], ... 'baz': [1, 2, 3, 4, 5, 6], ... 'zoo': ['x', 'y', 'z', 'q', 'w', 't']}) >>> df.execute() foo bar baz zoo 0 one A 1 x 1 one B 2 y 2 one C 3 z 3 two A 4 q 4 two B 5 w 5 two C 6 t
>>> df.pivot(index='foo', columns='bar', values='baz').execute() bar A B C foo one 1 2 3 two 4 5 6
>>> df.pivot(index='foo', columns='bar', values=['baz', 'zoo']).execute() baz zoo bar A B C A B C foo one 1 2 3 x y z two 4 5 6 q w t
也可以分配一个列名列表或一个索引名列表。
>>> df = md.DataFrame({ ... "lev1": [1, 1, 1, 2, 2, 2], ... "lev2": [1, 1, 2, 1, 1, 2], ... "lev3": [1, 2, 1, 2, 1, 2], ... "lev4": [1, 2, 3, 4, 5, 6], ... "values": [0, 1, 2, 3, 4, 5]}) >>> df.execute() lev1 lev2 lev3 lev4 values 0 1 1 1 1 0 1 1 1 2 2 1 2 1 2 1 3 2 3 2 1 2 4 3 4 2 1 1 5 4 5 2 2 2 6 5
>>> df.pivot(index="lev1", columns=["lev2", "lev3"], values="values").execute() lev2 1 2 lev3 1 2 1 2 lev1 1 0.0 1.0 2.0 NaN 2 4.0 3.0 NaN 5.0
>>> df.pivot(index=["lev1", "lev2"], columns=["lev3"], values="values").execute() lev3 1 2 lev1 lev2 1 1 0.0 1.0 2 2.0 NaN 2 1 4.0 3.0 2 NaN 5.0
如果存在任何重复项,则会引发 ValueError。
>>> df = md.DataFrame({"foo": ['one', 'one', 'two', 'two'], ... "bar": ['A', 'A', 'B', 'C'], ... "baz": [1, 2, 3, 4]}) >>> df.execute() foo bar baz 0 one A 1 1 one A 2 2 two B 3 3 two C 4
注意,对于我们的 index 和 columns 参数来说,前两行是相同的。
>>> df.pivot(index='foo', columns='bar', values='baz').execute() Traceback (most recent call last): ... ValueError: Index contains duplicate entries, cannot reshape