3 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
你的問(wèn)題已經(jīng)得到了一些很好的答案。但是,我還想為您提供一種完全不同的方法,它可能會(huì)更加優(yōu)雅(取決于您的最終目標(biāo)是什么)。
作為一般經(jīng)驗(yàn)法則,您希望避免遍歷數(shù)據(jù)幀的行。這往往很慢,通常有更好的方法。嘗試將您的想法轉(zhuǎn)變?yōu)閷⒑瘮?shù)應(yīng)用于整個(gè)“向量”(數(shù)據(jù)框列的花哨詞)。
看一下這個(gè):
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方法非常強(qiáng)大、靈活且快速。它允許您將自己的函數(shù)應(yīng)用于數(shù)據(jù)幀,并且它的性能往往非常好。嘗試一下,您可能會(huì)受到啟發(fā),以不同的方式解決您的問(wèn)題。

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以遍歷更優(yōu)雅的整行:
for index, row in df.iterrows(): print(row['col 1'], row['col 2'])

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
在zip內(nèi)置函數(shù)創(chuàng)建iterables,無(wú)論你作為參數(shù)傳遞聚集,所以這應(yīng)該是一種替代方案:
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
添加回答
舉報(bào)