Pandas 中文手册

3.5 Series的修改与转换

Pandas Series 修改与转换:从索引操作到数据类型转换与合并

Pandas 中文手册

本章详细讲解Pandas Series的修改与转换技巧,包括按索引或位置修改值、使用rename和reindex修改索引、astype改变数据类型、与列表字典NumPy数组的相互转换,以及通过concat和append进行拼接合并,适合新手快速上手。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

Pandas Series 修改与转换指南

Series 是 Pandas 中一种基本的一维数据结构,类似于带标签的数组。在本章中,我们将学习如何修改 Series 的值、索引和数据类型,以及如何将其与其他数据结构进行转换和合并。内容对新手友好,包含示例代码。

修改 Series 的值

Series 的值可以通过索引或位置进行修改。

按索引修改

使用索引直接赋值来修改特定值。

import pandas as pd

# 创建一个示例 Series
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print("原始 Series:")
print(s)

# 按索引修改值
s['a'] = 100
print("\n修改后的 Series:")
print(s)

按位置修改

使用 .iloc 属性按整数位置修改值。

# 按位置修改(位置从 0 开始)
s.iloc[1] = 200  # 修改第二个元素
print("\n按位置修改后的 Series:")
print(s)

修改 Series 的索引

Series 的索引可以通过重命名或重新索引来修改。

使用 rename 重命名索引

.rename 方法允许您更改一个或多个索引标签。

# 重命名索引
s_renamed = s.rename(index={'a': 'A', 'b': 'B'})
print("\n重命名索引后的 Series:")
print(s_renamed)

使用 reindex 重新索引

.reindex 方法创建一个新的 Series,基于新的索引列表。如果索引不存在,会引入 NaN 值。

# 重新索引
new_index = ['A', 'B', 'C', 'D']
s_reindexed = s.reindex(new_index)
print("\n重新索引后的 Series:")
print(s_reindexed)

修改 Series 的数据类型

使用 .astype 方法可以转换 Series 的数据类型。

# 创建一个整数类型的 Series
s_int = pd.Series([1, 2, 3])
print("原始数据类型:")
print(s_int.dtype)

# 转换为浮点类型
s_float = s_int.astype('float64')
print("\n转换后的数据类型:")
print(s_float.dtype)
print("\n转换后的 Series:")
print(s_float)

Series 与列表、字典、NumPy 数组的转换

Series 转列表

使用 .tolist() 方法将 Series 转换为 Python 列表。

# Series 转列表
s_list = s.tolist()
print("\nSeries 转换为列表:")
print(s_list)

Series 转字典

使用 .to_dict() 方法将 Series 转换为 Python 字典。

# Series 转字典
s_dict = s.to_dict()
print("\nSeries 转换为字典:")
print(s_dict)

Series 转 NumPy 数组

使用 .values.to_numpy() 方法将 Series 转换为 NumPy 数组。

import numpy as np

# Series 转 NumPy 数组
s_array = s.values  # 或 s.to_numpy()
print("\nSeries 转换为 NumPy 数组:")
print(s_array)

反向转换:从列表、字典、NumPy 数组创建 Series

# 从列表创建 Series
list_data = [1, 2, 3]
s_from_list = pd.Series(list_data)
print("\n从列表创建的 Series:")
print(s_from_list)

# 从字典创建 Series
dict_data = {'a': 1, 'b': 2, 'c': 3}
s_from_dict = pd.Series(dict_data)
print("\n从字典创建的 Series:")
print(s_from_dict)

# 从 NumPy 数组创建 Series
np_array = np.array([4, 5, 6])
s_from_np = pd.Series(np_array)
print("\n从 NumPy 数组创建的 Series:")
print(s_from_np)

Series 的拼接与合并

使用 concat 拼接

pandas.concat 函数用于拼接多个 Series。

# 创建两个 Series
s1 = pd.Series([1, 2], index=['x', 'y'])
s2 = pd.Series([3, 4], index=['a', 'b'])

# 拼接 Series
s_concat = pd.concat([s1, s2])
print("\n拼接后的 Series:")
print(s_concat)

使用 append 合并(已弃用)

.append 方法也可用于合并 Series,但自 Pandas 1.4.0 起已弃用,建议使用 concat

# 使用 append 合并(仅作示例)
s_appended = s1.append(s2)
print("\n使用 append 合并的 Series:")
print(s_appended)
print("\n注意:append 方法已弃用,建议使用 concat。")

总结

本章我们学习了如何修改 Pandas Series 的值、索引和数据类型,以及如何与列表、字典、NumPy 数组进行转换。我们还讨论了 Series 的拼接与合并方法。记住,在实际使用中,优先使用 concat 进行拼接,而不是弃用的 append。通过这些操作,您可以灵活处理数据,为后续分析打下基础。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包