Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get mean of rows selected with another column's values in pandas

I am trying to get calculate the mean for Score 1 only if column Dates is equal to Oct-16:

enter image description here

What I originally tried was:

 import pandas as pd
 import numpy as np
 import os

 dataFrame = pd.read_csv("test.csv")

 for date in dataFrame["Dates"]:
    if date == "Oct-16":
        print(date)##Just checking
        print(dataFrame["Score 1"].mean())

But my results are the mean for the whole column Score 1

Another thing I tried was manually telling it which indices to calculate the mean for:

dataFrame["Score 1"].iloc[0:2].mean()

But ideally I would like to find a way to do it if Dates == "Oct-16".

like image 604
Quinnystar27 Avatar asked Feb 06 '23 22:02

Quinnystar27


1 Answers

Iterating through the rows doesn't take advantage of Pandas' strengths. If you want to do something with a column based on values of another column, you can use .loc[]:

dataFrame.loc[dataFrame['Dates'] == 'Oct-16', 'Score 1']

The first part of .loc[] selects the rows you want, using your specified criteria (dataFrame['Dates'] == 'Oct-16'). The second part specifies the column you want (Score 1). Then if you want to get the mean, you can just put .mean() on the end:

dataFrame.loc[dataFrame['Dates'] == 'Oct-16', 'Score 1'].mean()
like image 144
ASGM Avatar answered Feb 08 '23 15:02

ASGM