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
添加回答
舉報