如何将 Pandas DataFrame 列转换为 Series?
使用 Python 中的 Pandas 库将 Pandas DataFrame 列转换为 Series 是数据分析中的常见任务。Pandas 中的 Series 对象是功能强大的数据结构,表示一维标记数组,能够保存各种类型的数据,包括数字、分类和文本数据。将 DataFrame 列转换为 Series 有几个优点。它使我们能够专注于特定列并轻松执行有针对性的操作和分析。这在处理大型数据集时尤其有价值,可以高效地提取和处理相关信息。
在本文中,我们将探讨在 Pandas 中将 DataFrame 列转换为 Series 的不同方法。将介绍按名称访问列、利用 iloc 和 loc 访问器以及遍历列等技术。通过理解这些方法,我们可以获得将 DataFrame 列有效转换为 Series 所需的知识和工具,从而增强您在 Pandas 框架内操作和提取数据的能力。
方法 1:按名称访问列
要在 Pandas 中将 DataFrame 列转换为 Series,您可以使用括号表示法 (df['column_name']) 或点表示法 (df.column_name) 通过其名称访问该列。括号表示法返回包含列数据的 Series 对象,而点表示法提供了一种无需使用括号即可访问列的便捷方法。这两种方法都可以轻松地将 DataFrame 列转换为 Series。
让我们考虑一个例子来更好地理解这种方法:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}) # 使用括号符号将列"A"提取为 Series series_A = df['A'] # 使用点符号将列"B"提取为 Series series_B = df.B # 打印 Series 对象 print(series_A) print(series_B)
在上面的例子中,我们使用括号符号 df['A'] 和点符号 df.B 来访问列"A"和'B'。两个表达式均返回包含相应列数据的 Series 对象。
输出
0 1 1 2 2 3 3 4 Name: A, dtype: int64 0 5 1 6 2 7 3 8 Name: B, dtype: int64
在输出中,您将看到两个 Series 对象:series_A 和 series_B。每个 Series 代表 DataFrame df 中的相应列。值与其对应的索引一起显示。dtype int64 表示两个 Series 中值的数据类型都是 64 位整数。series_A 包含来自列"A"的数据,即 [1, 2, 3, 4],series_B 包含来自列"B"的数据,即 [5, 6, 7, 8]。
方法 2:使用 iloc 和 loc 访问器
在 Pandas 中,iloc 和 loc 访问器分别用于基于整数或基于标签的索引访问 DataFrame 元素。这些访问器提供了一种从数据框中提取特定列并将其转换为 Series 的强大方法。iloc 访问器代表"整数位置",允许我们使用基于整数的索引访问 DataFrame 元素。使用 iloc,我们可以使用整数位置指定行和列的位置。要使用 iloc 将列转换为 Series,我们将行索引指定为冒号:以表示我们要选择所有行,并将列索引指定为所需列的整数位置。
示例
以下是示例:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}) # 使用基于整数的索引提取列"A" series_A = df.iloc[:, 0] # 使用基于标签的索引提取列"B" series_B = df.loc[:, 'B'] # 打印 series_A 的内容和series_B print(series_A) print(series_B)
在上面的例子中,df.iloc[:, 0] 访问第一列(列索引 0),而 df.loc[:, 'B'] 访问标记为"B"的列。两个表达式都返回包含相应列数据的 Series 对象。
输出
0 1 1 2 2 3 3 4 Name: A, dtype: int64 0 5 1 6 2 7 3 8 Name: B, dtype: int64
提供的代码初始化一个名为 df 的 DataFrame,它有两列"A"和"B",分别包含数据值。使用 df.iloc[:, 0] 访问列"A",使用 df.loc[:, 'B'] 访问列"B"。这样就可以从 DataFrame 中提取特定列作为 Series 对象。
方法 3:遍历列
在此方法中,我们遍历 DataFrame 的列,并将每列提取为单独的 Series。这样我们就可以将每个 Series 存储在一个列表中,从而可以对各个列进行进一步的处理或分析。
示例
让我们考虑一个例子来理解这种方法:
import pandas as pd # 创建一个包含"A"和"B"列的 DataFrame df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}) series_list = [] # 遍历 DataFrame 中的每一列 for column in df.columns: # 将每一列提取为一个 Series 并将其附加到 series_list series_list.append(df[column]) # 将第一个 Series 分配给 series_A,将第二个 Series 分配给 series_B series_A = series_list[0] series_B = series_list[1] # 打印 series_A 和 series_B 的内容 print(series_A) print(series_B)
在上面的例子中,我们导入了 pandas 库并创建了一个名为"df"的 DataFrame,其列为"A"和"B"。我们初始化一个空列表 series_list 来存储 Series 对象。
输出
0 1 1 2 2 3 3 4 Name: A, dtype: int64 0 5 1 6 2 7 3 8 Name: B, dtype: int64
输出显示 series_A 和 series_B 的内容,然后将其转换为表示 DataFrame 的列"A"和"B"的 Series 对象。每个 Series 都显示其各自列的值及其索引。dtype 指定 Series 中元素的数据类型,在本例中为 int64。
结论
总之,将 Pandas DataFrame 列转换为 Series 涉及按名称访问列、使用 iloc 和 loc 访问器以及遍历列。这些方法允许高效转换和操纵 Pandas 的数据分析功能。将列转换为 Series 会创建引用列数据的新对象,而无需修改原始 DataFrame。这些技术支持对列进行特定操作,并有助于使用 Pandas 进行数据操纵和分析。