前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[1224]Pandas常用的遍历方法

[1224]Pandas常用的遍历方法

作者头像
周小董
发布2023-10-10 08:41:25
4980
发布2023-10-10 08:41:25
举报
文章被收录于专栏:python前行者python前行者

for 循环遍历每一行/列

使用 for 循环可以遍历 DataFrame 中的每一行或每一列。需要使用 iterrows() 方法遍历每一行,或者使用 iteritems() 方法遍历每一列。

代码如下:

代码语言:javascript
复制
import pandas as pd

# 创建 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'gender': ['F', 'M', 'M']
}
df = pd.DataFrame(data)

# 遍历每一行
for index, row in df.iterrows():
    print(f"Index: {index}, Row: {row['name']}, {row['age']}, {row['gender']}")

# 遍历每一列
for column, value in df.iteritems():
    print(f"Column: {column}")
    print(value)

apply() 方法

apply() 方法可以应用一个函数到 DataFrame 中的每一个元素,返回一个新的 DataFrame。

代码语言:javascript
复制
import pandas as pd

# 创建 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'gender': ['F', 'M', 'M']
}
df = pd.DataFrame(data)

# 定义一个函数,对每一个元素加 1
def add_one(x):
    return x + 1

# 应用函数到 DataFrame
df_new = df.apply(add_one)
print(df_new)
代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})

df["C"] = df["B"].apply(lambda x: x * 2)

输出结果如下:

代码语言:javascript
复制
   A  B  C
0  1  3  6
1  2  4  8

其中,apply方法接受一个函数作为参数,该函数的输入是该列的每一个值,输出是计算结果。

applymap() 方法

applymap() 方法可以应用一个函数到 DataFrame 中的每一个元素,返回一个新的 DataFrame。

代码语言:javascript
复制
import pandas as pd

# 创建 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'gender': ['F', 'M', 'M']
}
df = pd.DataFrame(data)

# 定义一个函数,对每一个元素加 1
def add_one(x):
    return x + 1

# 应用函数到 DataFrame
df_new = df.applymap(add_one)
print(df_new)

map() 方法

map() 方法可以应用一个函数到 Series 中的每一个元素,返回一个新的 Series。

代码语言:javascript
复制
import pandas as pd

# 创建 Series
s = pd.Series([1, 2, 3])

# 定义一个函数,对每一个元素加 1
def add_one(x):
    return x + 1

# 应用函数到 Series
s_new = s.map(add_one)
print(s_new)

iterrows()方法

pandas提供了多种方法来遍历DataFrame的行数据,主要有iterrows、itertuples和apply等。其中,iterrows方法返回一个迭代器,可以逐行遍历DataFrame,返回每一行数据的索引和值。它的基本使用方法如下:

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})

for index, row in df.iterrows():
    print(index, row)

输出结果如下:

代码语言:javascript
复制
0 A    1
  B    3
1 A    2
  B    4
dtype: int64

其中,index是每一行数据的索引,row是一个Series对象,表示该行数据。我们可以通过row[“列名”]或row.列名的方式来获取指定列的值。

iteritems()方法

iteritems()方法以 (列标签,列) 的形式遍历 DataFrame 的列。它返回一个迭代器,其中每个元素都是一个元组,元组中包含列标签和对应列的 Pandas Series。

例如:

代码语言:javascript
复制
for col_label, column in df.iteritems():
    print(col_label)
    print(column)

itertuples()方法

itertuples()方法以命名元组的形式遍历 DataFrame 的行。返回的每个命名元组都代表 DataFrame 中的一行。这种方法比 iterrows() 更快。

示例如下:

代码语言:javascript
复制
for row in df.itertuples(index=False):
    print(row)
代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})

for row in df.itertuples():
    print(row.Index, row.A, row.B)

总的来说,对于大型的 Pandas DataFrame,应该尽量避免使用循环遍历,而是使用 Pandas 内置的方法,如 apply() 和 applymap() 等。这些方法能够更快速、高效地操作 DataFrame。

参考:https://pythonjishu.com/pandas-6-traversal-method/ https://www.python100.com/html/113031.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • apply() 方法
  • applymap() 方法
  • map() 方法
  • iterrows()方法
  • iteritems()方法
  • itertuples()方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档