Pandas 如何高效地循环遍历Pandas DataFrame

Pandas 如何高效地循环遍历Pandas DataFrame

在本文中,我们将介绍使用Pandas的最有效方法来循环遍历数据框。

阅读更多:Pandas 教程

for循环

最基本的方法是使用for循环来遍历DataFrame。这种方法将为您提供对DataFrame行的访问,这是DataFrame最基本的一维。

import pandas as pd

data = {'A': [1, 2, 3], 'B': ['a', 'b', 'c']}
df = pd.DataFrame(data)

for index, row in df.iterrows():
    print(row['A'], row['B'])

这个方法对于小型DataFrame来说是可以接受的,但是对于大型DataFrame,它的效率会变得较低。

apply函数

apply是Pandas中用于DataFrame的最常用函数之一。它将函数应用于DataFrame的每一行或每一列,并将其结果作为新的Series返回。

import pandas as pd

data = {'A': [1, 2, 3], 'B': ['a', 'b', 'c']}
df = pd.DataFrame(data)

def func(row):
    return row['A'] * 2

df['A_new'] = df.apply(func, axis=1)

print(df)

这个方法通常比for循环更有效,因为它允许Pandas在其内部优化代码,以便更快地处理数据。但是,对于大型DataFrame,这种方法也可能会变得缓慢。

itertuples方法

itertuples方法是不错的遍历DataFrame的方法。它比for循环更快,并且比apply方法的速度要快得多。

import pandas as pd

data = {'A': [1, 2, 3], 'B': ['a', 'b', 'c']}
df = pd.DataFrame(data)

for row in df.itertuples():
    print(row[1], row[2])

itertuples方法比apply方法更快是因为它返回元组而不是Series对象,这使得它更快,并且还消耗更少的内存。

at和iat方法

如果您只需要访问单个单元格,那么at和iat方法是很好的解决方案。它们都非常快,而且在访问单个元素时优于loc和iloc。

import pandas as pd

data = {'A': [1, 2, 3], 'B': ['a', 'b', 'c']}
df = pd.DataFrame(data)

print(df.at[0, 'A'])
print(df.iat[0, 0])

at和iat这两个方法之间的区别在于at是通过标签访问元素,而iat是通过整数位置访问元素。

总结

遍历一个大型DataFrame可能会很慢,但使用apply函数和itertuples方法通常可以提高速度。对于只需要访问一些单元格的小型DataFrame,使用at和iat方法是最有效的。为了获得最高效的代码,请尽量避免使用for循环来遍历DataFrame。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程