在pandas中遍歷DataFrame行

2021-09-10 09:08:43 字數 3319 閱讀 5001

有如下 pandas dataframe:

import pandas as pdinp = [, , ]df = pd.dataframe(inp)print df上面**輸出:

c1 c20 10 1001 11 1102 12 120現在需要遍歷上面dataframe的行。對於每一行,都希望能夠通過列名訪問對應的元素(單元格中的值)。也就是說,需要類似如下的功能:

for row in df.rows:print row['c1'], row['c2']pandas 可以這樣做嗎?

我找到了similar question。但這並不能給我需要的答案,裡面提到:

for date, row in df.t.iteritems():
要麼

for row in df.iterrows():
但是我不明白row物件是什麼,以及我如何使用它。

要以 pandas 的方式迭代遍歷dataframe的行,可以使用:

itertuples()應該比iterrows()

但請注意,根據文件(目前 pandas 0.19.1):

def valuation_formula(x, y):return x * y * 0.5您可以使用df.iloc函式,如下所示:

for i in range(0, len(df)):print df.iloc[i]['c1'], df.iloc[i]['c2']您可以編寫自己的實現namedtuple的迭代器

from collections import namedtupledef myiter(d, cols=none):if cols is none:v = d.values.tolist()cols = d.columns.values.tolist()

else:

j = [d.columns.get_loc(c) for c in cols]

v = d.values[:, j].tolist()

n = namedtuple('mytuple', cols)

for line in iter(v):

yield n(*line)

這相當於pd.dataframe.itertuples,但是效率更高。

將自定義函式用於給定的dataframe:

list(myiter(df))[mytuple(c1=10, c2=100), mytuple(c1=11, c2=110), mytuple(c1=12, c2=120)]或與pd.dataframe.itertuples

list(df.itertuples(index=false))[pandas(c1=10, c2=100), pandas(c1=11, c2=110), pandas(c1=12, c2=120)]全面的測試

我們測試了所有可用列:

在pandas中遍歷DataFrame行

有如下 pandas dataframe import pandas as pd inp df pd.dataframe inp print df 上面 輸出 c1 c2 0 10 100 1 11 110 2 12 120 現在需要遍歷上面dataframe的行。對於每一行,都希望能夠通過列名訪問...

pandas批量讀取csv生成dataframe

此方法用來將資料集合並 import pandas as pd import glob import os pathr r d xx xx 批量檔案所在路徑 file sorted glob.glob os.path.join pathr,csv key lambda name int name 8...

pandas中遍歷dataframe的每乙個元素

假如有乙個需求場景需要遍歷乙個csv或excel中的每乙個元素,判斷這個元素是否含有某個關鍵字 那麼可以用python的pandas庫來實現。方法一 import pandas as pd data str ewt earw agter awetg aeorgh dataframe1 pd.data...