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。
极客教程