3 回答
TA贡献1801条经验 获得超16个赞
你的问题已经得到了一些很好的答案。但是,我还想为您提供一种完全不同的方法,它可能会更加优雅(取决于您的最终目标是什么)。
作为一般经验法则,您希望避免遍历数据帧的行。这往往很慢,通常有更好的方法。尝试将您的想法转变为将函数应用于整个“向量”(数据框列的花哨词)。
看一下这个:
import pandas as pd
import numpy as np
df = pd.DataFrame({'col 1': [1,2,3,4,5], 'col 2': [6,7,8,9,10]})
def sum_2_cols(col1,col2):
return col1 + col2
df['new_col'] = np.vectorize(sum_2_cols)(df['col 1'], df['col 2'])
该np.vectorize方法非常强大、灵活且快速。它允许您将自己的函数应用于数据帧,并且它的性能往往非常好。尝试一下,您可能会受到启发,以不同的方式解决您的问题。
TA贡献1942条经验 获得超3个赞
您可以遍历更优雅的整行:
for index, row in df.iterrows(): print(row['col 1'], row['col 2'])
TA贡献1851条经验 获得超4个赞
在zip内置函数创建iterables,无论你作为参数传递聚集,所以这应该是一种替代方案:
import pandas as pd
df = pd.DataFrame({'col 1': [1,2,3,4,5], 'col 2': [6,7,8,9,10]})
for i,j in zip(df['col 1'], df['col 2']):
print(i)
print(j)
输出:
1
6
2
7
3
8
4
9
5
10
添加回答
举报