Pandas에서 DataFrame의 행을 반복하는 방법

Suraj Joshi 2023년1월30일 2020년6월16일
  1. Pandas DataFrame에서 행을 반복하는index 속성
  2. 파이썬에서 DataFrame의 행을 반복하는loc[]메소드
  3. 파이썬에서 DataFrame의 행을 반복하는iloc[]메소드
  4. pandas.DataFrame.iterrows()는 행 Pandas를 반복합니다
  5. pandas.DataFrame.itertuples는 행 Pandas를 반복합니다
  6. pandas.DataFrame.apply는 행 Pandas를 반복합니다
Pandas에서 DataFrame의 행을 반복하는 방법

DataFrame의 index 속성을 사용하여 Pandas DataFrame의 행을 반복 할 수 있습니다. DataFrame 객체의loc(),iloc(),iterrows(),itertuples(),iteritems()apply()메소드를 사용하여 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})

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

Pandas DataFrame에서 행을 반복하는index 속성

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_1Income_2를 더하고 총 수입을 인쇄합니다.

파이썬에서 DataFrame의 행을 반복하는loc[]메소드

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의 전체 행을 반복하는 범위 객체를 생성합니다.

파이썬에서 DataFrame의 행을 반복하는iloc[]메소드

Pandas DataFrame iloc 속성은loc 속성과 매우 유사합니다. lociloc의 유일한 차이점은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를 나타내고, 인덱스 1Income_1열을, 인덱스 2Income_2열을 나타냅니다.

pandas.DataFrame.iterrows()는 행 Pandas를 반복합니다

pandas.DataFrame.iterrows()의 색인을 반환합니다 Series로서 행과 행의 전체 데이터. 따라서이 함수를 사용하여 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키워드는 각 행에 적용되는 인라인 함수를 정의하는 데 사용됩니다.

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Pandas DataFrame

관련 문장 - Pandas DataFrame Row