pandas.DataFrame.pivot # 数据框。枢轴(*,列,索引= _NoDefault.no_default,值= _NoDefault.no_default)[来源] # 返回按给定索引/列值组织的重塑的 DataFrame。 根据列值重塑数据(生成“数据透视表”)。使用指定索引/列中的唯一值来形成结果 DataFrame 的轴。该函数不支持数据聚合,多个值将导致列中出现MultiIndex。有关重塑的更多信息,请参阅用户指南。 参数: 列str 或对象或 str 列表用于制作新框架的列的列。 索引str 或对象或 str 列表,可选用于创建新框架索引的列。如果未给出,则使用现有索引。 值str,对象或先前的列表,可选用于填充新框架值的列。如果未指定,则将使用所有剩余列,并且结果将具有分层索引列。 返回: 数据框返回重塑的数据帧。 加薪: 值错误:当有任何索引时,列组合具有多个值。当需要聚合时使用DataFrame.pivot_table 。 也可以看看 DataFrame.pivot_table枢轴的泛化,可以处理一对索引/列的重复值。 DataFrame.unstack基于索引值而不是列进行透视。 wide_to_long宽面板到长格式。灵活性较差,但比熔化更用户友好。 笔记 对于更精细的控制,请参阅分层索引文档以及相关的 stack/unstack 方法。 请参阅用户指南以获取更多示例。 例子 >>> df = pd.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 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') bar A B C foo one 1 2 3 two 4 5 6 >>> df.pivot(index='foo', columns='bar')['baz'] bar A B C foo one 1 2 3 two 4 5 6 >>> df.pivot(index='foo', columns='bar', values=['baz', 'zoo']) 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 = pd.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 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") 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") 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 = pd.DataFrame({"foo": ['one', 'one', 'two', 'two'], ... "bar": ['A', 'A', 'B', 'C'], ... "baz": [1, 2, 3, 4]}) >>> df foo bar baz 0 one A 1 1 one A 2 2 two B 3 3 two C 4 请注意,索引 和列参数的前两行是相同的。 >>> df.pivot(index='foo', columns='bar', values='baz') Traceback (most recent call last): ... ValueError: Index contains duplicate entries, cannot reshape