如何在 Pandas 中遍歷 DataFrame 的行
- 使用 index 屬性來遍歷 Pandas DataFrame 中的行
-
loc[]
方法來遍歷 Python 中的 DataFrame 行 -
在 Python 中用
iloc[]
方法遍歷 DataFrame 行 -
pandas.DataFrame.iterrows()
遍歷 Pandas 行 - pandas.DataFrame.itertuples 遍歷 Pandas 行
-
##
pandas.DataFrame.apply
遍歷 Pandas 行
我們可以使用 DataFrame 的 index 屬性遍歷 Pandas DataFrame 的行。我們還可以使用 DataFrame 物件的 loc()
,iloc()
,iterrows()
,itertuples()
,iteritems()
和 apply()
方法遍歷 Pandas DataFrame 的行。
在以下各節中,我們將使用以下 DataFrame
作為示例。
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]
df=pd.DataFrame({"Date":dates,
"Income_1":income1,
"Income_2":income2})
print(df)
輸出:
Date Income_1 Income_2
0 April-10 10 20
1 April-11 20 30
2 April-12 10 10
3 April-13 15 5
4 April-14 10 40
5 April-16 12 13
使用 index 屬性來遍歷 Pandas DataFrame 中的行
Pandas DataFrame 的 index 屬性提供了從 DataFrame 的頂行到底行的範圍物件。我們可以使用範圍來迭代 Pandas 中的行。
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]
df=pd.DataFrame({"Date":dates,
"Income_1":income1,
"Income_2":income2})
for i in df.index:
print("Total income in "+ df["Date"][i]+ " is:"+str(df["Income_1"][i]+df["Income_2"][i]))
輸出:
Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25
它將每行的 Income_1
和 Income_2
相加並列印總收入。
loc[]
方法來遍歷 Python 中的 DataFrame 行
loc[]
方法用於一次訪問一行。當我們在遍歷 DataFrame 的迴圈中使用 loc[]
方法時,我們可以遍歷 DataFrame 的行。
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]
df=pd.DataFrame({"Date":dates,
"Income_1":income1,
"Income_2":income2})
for i in range(len(df)):
print("Total income in "+ df.loc[i,"Date"]+ " is:"+str(df.loc[i,"Income_1"]+df.loc[i,"Income_2"]))
輸出:
Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25
在這裡,range(len(df))
生成一個範圍物件以遍歷 DataFrame 中的整個行。
在 Python 中用 iloc[]
方法遍歷 DataFrame 行
Pandas DataFrame 的 iloc 屬性也非常類似於 loc 屬性。loc 和 iloc 之間的唯一區別是,在 loc 中,我們必須指定要訪問的行或列的名稱,而在 iloc 中,我們要指定要訪問的行或列的索引。
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]
df=pd.DataFrame({"Date":dates,
"Income_1":income1,
"Income_2":income2})
for i in range(len(df)):
print("Total income in "+ df.iloc[i,0]+ " is:"+str(df.iloc[i,1]+df.iloc[i,2]))
輸出:
Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25
這裡的索引 0
代表 DataFrame 的第一列,即 Date
,索引 1
代表 Income_1
列,索引 2
代表 Income_2
列。
pandas.DataFrame.iterrows()
遍歷 Pandas 行
pandas.DataFrame.iterrows()
返回的索引該行以及該行的整個資料為系列。因此,我們可以使用此函式在 Pandas DataFrame 中的行上進行迭代。
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]
df=pd.DataFrame({"Date":dates,
"Income_1":income1,
"Income_2":income2})
for index, row in df.iterrows():
print("Total income in "+ row["Date"]+ " is:"+str(row["Income_1"]+row["Income_2"]))
輸出:
Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25
pandas.DataFrame.itertuples 遍歷 Pandas 行
pandas.DataFrame.itertuples
返回一個物件,以使用第一個欄位作為索引,其餘欄位作為列值。因此,我們還可以使用此函式在 Pandas DataFrame 中的行上進行迭代。
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]
df=pd.DataFrame({"Date":dates,
"Income_1":income1,
"Income_2":income2})
for row in df.itertuples():
print("Total income in "+ row.Date+ " is:"+str(row.Income_1+row.Income_2))
輸出:
Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25
##pandas.DataFrame.apply
遍歷 Pandas 行
pandas.DataFrame.apply
返回一個 DataFrame
沿 DataFrame 的給定軸應用給定函式的結果。
語法:
DataFrame.apply(self,
func,
axis=0,
raw=False,
result_type=None,
args=(),
**kwds)
其中,func
代表要應用的函式,而 axis
代表應用函式的軸。我們可以使用 axis = 1
或 axis ='columns'
將函式應用於每一行。
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]
df=pd.DataFrame({"Date":dates,
"Income_1":income1,
"Income_2":income2})
print(df.apply(lambda row: "Total income in "+ row["Date"]+ " is:"+str(row["Income_1"]+row["Income_2"]),axis=1))
輸出:
0 Total income in April-10 is:30
1 Total income in April-11 is:50
2 Total income in April-12 is:20
3 Total income in April-13 is:20
4 Total income in April-14 is:50
5 Total income in April-16 is:25
dtype: object
此處,lambda
關鍵字用於定義應用於每行的行內函數。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn相關文章 - Pandas DataFrame
- 如何將 Pandas DataFrame 列標題獲取為列表
- 如何刪除 Pandas DataFrame 列
- 如何在 Pandas 中將 DataFrame 列轉換為日期時間
- 如何在 Pandas DataFrame 中將浮點數轉換為整數
- 如何按一列的值對 Pandas DataFrame 進行排序
- 如何用 group-by 和 sum 獲得 Pandas 總和