如何将 Pandas DataFrame 列转换为 Series?

pythonpandasserver side programmingprogramming

使用 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 进行数据操纵和分析。


相关文章