Hur man loopar genom DataFrames med pandas iterrows()
Python -funktionen pandas DataFrame.iterrows() används för att iterera över rader i en pandas DataFrame. För varje rad tillhandahåller den en Python-tupel som innehåller radindexet och ett Series-objekt med radens data.
Vad är syntaxen för pandas iterrows()?
Den grundläggande syntaxen för pandas DataFrame.iterrows() är enkel eftersom funktionen inte tar några parametrar:
df.iterrows()pythonI detta kodexempel är df den DataFrame som du vill iterera igenom.
Hur man använder funktionen pandas iterrows()
Funktionen DataFrame.iterrows() används vanligtvis när du behöver bearbeta data rad för rad. Den kombineras ofta med Python-for-loopar.
Addera värden i en kolumn
Låt oss titta på ett exempel på en DataFrame som innehåller kolumnerna Namn, Ålder och Poäng:
import pandas as pd
# Creating an example DataFrame
data = {'Name': ['Anna', 'Ben', 'Clara'],
'Age': [23, 35, 29],
'Score': [88, 92, 85]}
df = pd.DataFrame(data)
print(df)pythonKoden ovan resulterar i följande DataFrame:
Name Age Score
0 Anna 23 88
1 Ben 35 92
2 Clara 29 85Nu ska vi beräkna summan av poängen. Vi kan använda pandas DataFrame.iterrows() för att göra detta:
# Calculating the total score
total_score = 0
for index, row in df.iterrows():
total_score += row['Score']
print(f"The total score is: {total_score}")pythonI det här exemplet använde vi funktionen pandas iterrows() för att gå igenom varje rad och lägga ihop värdena i kolumnen Score ett efter ett. Detta ger följande resultat:
The total score is: 265När du använder pandas iterrows() är det viktigt att inte direkt ändra de data du itererar över. Beroende på datatyp kan detta leda till oväntade resultat och oönskat beteende.
Bearbeta rader med hjälp av villkor
Funktionen iterrows() kan också användas för att tillämpa villkor på enskilda rader i din DataFrame. Låt oss till exempel säga att du vill hämta namnen på alla över 30 år i DataFrame från det senaste exemplet:
# Retrieving names of people over 30 years old
names = []
for index, row in df.iterrows():
if row['Age'] > 30:
names.append(row['Name'])
print(f"People over 30 years old: {names}")pythonI det här exemplet använde vi DataFrame.iterrows() för att gå igenom varje rad med data. Inuti for-slingan kontrollerar den värdena i kolumnen Ålder och lagrar endast namnen på personer över 30 år i Python-listan names. Detta görs med hjälp av Python-funktionen append(). Här är resultatet:
People over 30 years old: ['Ben']Det är enkelt att använda DataFrames.iterrows(), men tänk på att det kanske inte fungerar så bra med stora DataFrames. I många fall kan andra alternativ, som apply() eller vektoriserade beräkningar, användas för att få bättre prestanda.