如何迭代 Pandas DataFrame 中的行?

当您使用 pandas 时,您一定遇到过处理 DataFrame 中的每一行的需要。尽管 pandas 是为更快的矢量化操作而设计的,但行式迭代在特定场景中也很重要。让我们深入研究这个博客,了解我们可以迭代 DataFrame 的各种方法以及何时使用它们。

目录

方法 1:使用 iterrows() – 对于较小的数据集

迭代行() 方法允许您循环遍历(索引,系列)对中的每一行。尽管它使用起来很简单,但对于较大的数据集来说速度较慢。最好用于需要快速操作的小型数据集。

现在让我们通过一个例子来理解这一点:

想象一下,您正在根据一小部分学生的分数对他们进行评分。

import pandas as pd
test_data = {'Name': ['Eva', 'Bobby', 'Charles'], 'Score': [85, 62, 90]}
df = pd.DataFrame(test_data)
for index, row in df.iterrows():
    test_grade = 'A' if row['Score'] >= 80 else 'B'
    print(f"{row['Name']} scored {row['Score']} and got grade {test_grade}.")

输出:

Eva scored 85 and got grade A.  
Bobby scored 62 and got grade B.  
Charles scored 90 and got grade A.

方法 2:使用 itertuples() – 对于较大的数据集

迭代元组() 以命名元组的形式返回值,这使得它比 迭代行()。它最好用于性能很重要的较大数据集。

现在,如果我们举一个例子,您需要在更大的数据集中计算员工的工资:

test_data = {'Employee': ['Harry', 'Hermione', 'Ron'], 'Monthly Salary': [3000, 4000, 3500]}
df = pd.DataFrame(test_data)
for row in df.itertuples():
    annual_salary = row._2 * 12
    print(f"{row.Employee} earns {annual_salary} annually.")

输出:

Harry earns 36000 annually.  
Hermione earns 48000 annually.  
Ron earns 42000 annually.

方法 3:使用 apply() – 用于复杂的逐行转换

申请() 使您能够将函数应用于每一行和每一列。如果您想要执行简洁且矢量化的逐行计算,它非常有用或非常理想。它主要用于跨行和列的复杂或数学运算。

现在,我们可以举一个例子,您想要计算一组人的体重指数(BMI)。

test_data = {'Name': ['Eva', 'Bobby'], 'Weight (kg)': [70, 85], 'Height (m)': [1.75, 1.80]}
df = pd.DataFrame(test_data)

df['BMI'] = df.apply(lambda row: row['Weight (kg)'] / (row['Height (m)'] ** 2), axis=1)
print(df)

输出:

姓名 重量(公斤) 高度(米) 体重指数
0 伊娃 70 1.75 22.857143
1 鲍比 85 1.80 26.234568

方法 4:基于索引的迭代 (iloc[] 或定位[]) – 对于特定行

国际劳工组织[] 和洛克[] 当您想要处理或更新数据帧中的特定行时,为您提供精确的索引。当您需要控制行以访问、修改它们并应用条件更新时,它非常有用。

如果我们举一个例子,您试图在金融数据集中标记超过一定金额的交易。

test_data = {‘交易ID’: [101, 102, 103], ‘数量’: [500, 1500, 750]}

test_data = {'Transaction ID': [101, 102, 103], 'Amount': [500, 1500, 750]}
df = pd.DataFrame(test_data)

for i in range(len(df)):
    if df.loc[i, 'Amount'] > 1000:
        df.loc[i, 'Flag'] = 'High'
    else:
        df.loc[i, 'Flag'] = 'Normal'
print(df)

输出:

交易ID 数量 旗帜
0 101 500 普通的
1 102 1500 高的
2 103 750 普通的

哪种方法:何时使用

方法 最适合
迭代行() 较小的数据集或需要快速探索任务的数据集。
迭代元组() 当您拥有需要更好性能的更大数据集时,这是最好的选择。
申请() 当需要复杂的行变换或向量化逻辑时使用它。
国际劳工组织[]/loc[] 这使您可以通过条件逻辑精确控制特定行。

结论

总之,虽然有多种方法可以迭代 Pandas DataFrame 中的行,但选择取决于任务的复杂性和数据集大小。对于小型数据集或自定义逻辑,您可以使用 iterrows() 或 apply()。为了在更大的数据集上获得更好的性能,请使用矢量化操作或 itertuples()。

在 Pandas Dataframe 中迭代行的方法 – 常见问题解答

迭代 panda DataFrame 的行的最佳方法是什么?

对于较小的数据集,您可以使用 迭代行() 对于较小的数据集,或者对于所有对性能至关重要的数据集,您可以使用 迭代元组()

如何迭代 pandas 中的多行?

如果你想在 pandas 中迭代多行,你可以使用 iloc 进行切片[] 或定位[] 迭代行的子集。

代码:


for _, row in df.loc[0:5].iterrows():

print(row)

pandas 中循环的替代方案是什么?

矢量化操作和方法(例如 apply() 或 transform())是比显式循环更快的替代方法。

itertuples() 比 iterrows() 更快吗?

是的, 迭代元组() 速度更快,因为它避免或不将每一行转换为系列对象。



Related Posts

仅14%现金返还24小时

仅14%现金返还24小时

该帖子最初发表在此网站上 迪拜,阿联酋,,,, 202…

修复Facebook市场不起作用的十大方法(2025)

修复Facebook市场不起作用的十大方法(2025)

关键要点 Facebook Marketplace是在…

如何将Google Drive备份移至外部硬盘驱动器?

如何将Google Drive备份移至外部硬盘驱动器?

云存储,尤其是Google Drive,对许多人提供了…

乔什·霍利(Josh Hawley AI)禁止针对中国的禁令可能会减慢美国创新

乔什·霍利(Josh Hawley AI)禁止针对中国的禁令可能会减慢美国创新

美国参议员乔什·霍利(Josh Hawley)介绍了法…

Snapdragon X CPU用于负担得起的PC将于2月24日在印度推出

高通周三宣布,它将很快在印度推出Snapdragon …

如何使用SQL删除查询在SQL中删除记录

如何使用SQL删除查询在SQL中删除记录

SQL中删除和截断命令 SQL中的删除查询仅从表中删除…