如何将 Pandas DataFrame 列转换为 Series?


将Pandas DataFrame列转换为Series是使用Python中的Pandas库进行数据分析中的一项常见任务。Pandas中的Series对象是强大的数据结构,表示一维标记数组,能够保存各种类型的数据,包括数值型、分类型和文本型数据。将DataFrame列转换为Series具有多种优势。它允许我们专注于特定列,并轻松地执行目标操作和分析。在处理大型数据集时,这显得尤为重要,可以有效地提取和处理相关信息。

在本文中,我们将探讨在Pandas中将DataFrame列转换为Series的不同方法。我们将介绍诸如按名称访问列、使用iloc和loc访问器以及遍历列等技术。通过理解这些方法,我们可以获得将DataFrame列有效地转换为Series所需的知识和工具,从而增强您在Pandas框架内操作和提取数据的能力。

方法一:按名称访问列

要在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]})

# Extract column 'A' as a Series using bracket notation
series_A = df['A']

# Extract column 'B' as a Series using dot notation
series_B = df.B

# Print the Series objects
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]。

方法二:使用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]})

# Extracting column 'A' using integer-based indexing

series_A = df.iloc[:, 0]

# Extracting column 'B' using label-based indexing

series_B = df.loc[:, 'B']

# Print the contents of series_A and 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的数据框,其中包含两列'A'和'B',它们包含各自的数据值。使用df.iloc[:, 0]访问列'A',使用df.loc[:, 'B']访问列'B'。这允许将特定列从DataFrame中提取为Series对象。

方法三:遍历列

在这种方法中,我们遍历DataFrame的列并将每一列提取为单独的Series。这允许我们将每个Series存储在一个列表中,以便对各个列进行进一步处理或分析。

示例

让我们来看一个例子来理解这种方法

import pandas as pd

# Create a DataFrame with columns 'A' and 'B'
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]})
series_list = []

# Iterate through each column in the DataFrame
for column in df.columns:
    # Extract each column as a Series and append it to the series_list
    series_list.append(df[column])

# Assign the first Series to series_A and the second Series to series_B
series_A = series_list[0]
series_B = series_list[1]

# Print the contents of series_A and series_B
print(series_A)
print(series_B)

在上面的例子中,我们导入了pandas库并创建了一个名为'df'的数据框,其中包含列'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进行数据操作和分析。

更新于:2023年7月24日

3K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告