Pandas の DataFrame の行を反復する方法
-
Pandas DataFrame の行を繰り返し処理する
index属性 -
Python で DataFrame の行を繰り返し処理する
loc[]メソッド -
Python で DataFrame の行を繰り返し処理する
iloc[]メソッド -
行 Pandas を反復するための
pandas.DataFrame.iterrows() -
行 Pandas を反復するための
pandas.DataFrame.itertuples -
##行 Pandas を反復する
pandas.DataFrame.apply
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
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_1 と Income_2 を追加し、総収入を出力します。
Python で DataFrame の行を繰り返し処理する loc[] メソッド
loc[] メソッドは、一度に 1つの行にアクセスするために使用されます。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 で DataFrame の行を繰り返し処理する iloc[] メソッド
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 を反復するための pandas.DataFrame.iterrows()
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 を反復するための pandas.DataFrame.itertuples
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 を反復する pandas.DataFrame.apply
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 で浮動小数点数 float を整数 int に変換する方法
- Pandas DataFrame を 1つの列の値で並べ替える方法
- Pandas group-by と Sum の集計を取得する方法
