SYNTAX
pandas.pivot(data, index=None, columns=None, values=None)
返回值。pivot() 函数的返回值是一个按索引/列值组织的重塑的DataFrame 。
背景介绍
直接引用Pandas文档网站的内容。
/列值。这个函数不支持数据聚合。如果有多个值,它们将导致列中的多索引。
本文将分别深入探讨这个函数的每个参数。
开始使用
记住,在每个代码片段的顶部添加所需的启动代码。这个代码段将使本文中的代码能够无误地运行。
本文使用的数据结构是一个由键(列名)和相关值(列表)组成的列表字典。
必要的启动代码
import pandas as pd
staff = {'FName': ['Clare', 'Micah', 'Ben', 'Mac', 'Emma'],
'EID': [100, 101, 102, 103, 104],
'Job': ['Designer I', 'Data Scientist', 'Developer', 'Designer II', 'Manager'],
'Age': [19, 23, 21, 27, 36],
'Salary': [87343, 94123, 96543, 65232, 102375]}
数据 "参数
melt() 函数data 参数是一个DataFrame。这个参数可以是以下数据类型之一,或者是可以转换为DataFrame的其他数据类型。
- CSV
- 列表字典(在本文中使用)
- 图元的字典,以及更多
如果DataFrame 是空的,将显示以下输出。
df = pd.DataFrame()
print(df)
输出
Empty DataFrame
Columns: []
Index: []
如果DataFrame包含工作人员,输出将类似于下面的表格。格式会有所不同,取决于用于运行代码的IDE。
代码
df = pd.DataFrame(staff)
print(df)
输出
| 名称 | 雇员身份 | 工作 | 年龄 | 薪资 | |
| 0 | 尹恩惠 | 100 | 设计师I | 19 | 87343 |
| 1 | 米迦 | 101 | 数据科学家 | 23 | 94123 |
| 2 | 本 | 102 | 开发商 | 21 | 96543 |
| 3 | 猕猴桃 | 103 | 设计师II | 27 | 65232 |
| 4 | 艾玛 | 104 | 经理 | 36 | 102375 |
注意:在本文中的所有例子中,使用工作人员的数据框架。
- 2. "索引 "参数
melt()index参数不是必需的。如果使用,这些列会创建一个新的索引。如果为空,将显示默认的索引编号系统。该参数可以是以下数据类型之一。
- 字符串
- 对象
- 字符串的列表
- 索引名称的列表
注意:所有分配给索引参数的数据必须包含唯一的值。如果不是,就会出现 ValueError发生。
在这个例子中,索引参数是EID 和 Job列。 列参数是必需的。如果是空的,将显示整个DataFrame。如果缺失,则 类型错误将会发生。
代码
df_index = df.pivot(index=['EID', 'Job'], columns=[] )
print(df_index)
输出
在这个代码例子中,index参数包含一个列名列表。它们在左边显示的顺序与在列表中输入的顺序相同:不是原始数据结构的顺序。
staff = {'FName': ['Clare', 'Micah', 'Ben', 'Mac', 'Emma'],
'eid': [100, 101, 102, 103, 104],
'工作'。['一级设计师', '数据科学家', '开发人员', '二级设计师', '经理'],
'年龄': [19, 23, 21, 27, 36],
'薪资':[87343, 94123, 96543, 65232, 102375]}
具有相关数据的其余列将在右边显示(FName, Age, Salary)。
| EID | 工作 | 姓氏 | 年龄 | 工资 |
| 100 | 设计师I | 尹明善 | 19 | 87343 |
| 101 | 数据科学家 | 米加 | 23 | 94123 |
| 102 | 开发人员 | 本 | 21 | 96543 |
| 103 | 设计师II | 硕士 | 27 | 65232 |
| 104 | 经理 | 艾玛 | 36 | 102375 |
- "*列 "*参数
melt() columns参数是必须的。该参数可以是以下数据类型之一。
- 字符串
- 对象
- 字符串的列表
- 索引名称的列表
如果是空的(如上图所示),整个DataFrame都会显示。如果缺失,则 TypeError发生。
代码
df_cols = df.pivot(index=['EID', 'Job', 'Salary'], columns=['FName'] )
print(df_cols)
输出
在这个例子中,索引列将显示在左边。其顺序与上述参数中列出的顺序相同。
传递给列参数*(FNames*)的列表作为小标题显示文本。其余的小标题是该列的值。
年龄列是两个参数中唯一省略的列。这一列成为表格的主标题。
原始数据结构中的Age数据将显示为浮点。
| 年龄 | |||||||
| F名称 | 本 | 克莱尔 | 艾玛 | 麦克 | 米加 | ||
| 身份证 | 工作机会 | 薪资 | |||||
| 100 | 设计师I | 87343 | 无 | 19.0 | 无 | ǞǞǞ | ǞǞǞ |
| 101 | 数据科学家 | 94123 | ǞǞǞ | ǞǞǞ | ǞǞǞ | ǞǞǞ | 23.0 |
| 102 | 开发者 | 96543 | 21.0 | ǞǞǞ | ǞǞǞ | ǞǞǞ | ǞǞǞ |
| 103 | 设计师II | 65232 | ǞǞǞ | ǞǞǞ | 无 | 27.0 | 瑙鲁 |
| 104 | 经理 | 102375 | 瑙鲁 | 经理 | 36.0 | 瑙鲁 | 价值 |
- *值 "*参数
这个函数的值参数不是必须的。该参数可以是以下数据类型之一。
- 字符串
- 对象
- 前面的列表
该参数使用列来填充DataFrame值。如果该参数为空,所有剩余的列都将显示。
在这个例子中,原始数据结构中的薪资数据将显示为浮点数。
代码
df_values = df.pivot(index=['EID', 'Job', 'Age'], columns=['FName'], values=['Salary'])
print(df_values)
| 工资 | |||||||
| 姓氏 | 本 | 克莱尔 | 邓丽君 | 麦 | 米加 | ||
| 身份证 | 工作机会 | 年龄 | |||||
| 100 | 设计师I | 19 | 无 | 87343.0 | 瑙鲁 | 无 | 94123.0 |
| 101 | 数据科学家 | 23 | ǞǞǞ | 无 | ǞǞǞ | ǞǞǞ | ǞǞǞ |
| 102 | 开发者 | 21 | 96543.0 | ǞǞǞ | ǞǞǞ | ǞǞǞ | ǞǞǞ |
| 103 | 设计师 II | 27 | 纳恩 | ǞǞǞ | 无 | 65232.0 | 钠 |
| 104 | 经理 | 36 | 瑙鲁 | 毋庸置疑 | 102375.0 | ǞǞǞ | NaN |
The postPython Pandas pivot() Functionfirst appeared onFinxter.