Как получить среднее значение строк, выбранных со значениями другого столбца в pandas

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Я пытаюсь вычислить среднее значение для оценки 1, только если столбец Dates равен Oct-16 :

введите описание изображения здесь

То, что я изначально пробовал, было:

  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())
 

Но мои результаты являются средним значением для всего столбца Score 1

Еще одна вещь, которую я пробовал, — вручную указывать, для каких индексов вычислять среднее значение:

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

Но в идеале я хотел бы найти способ сделать это, если Dates == "Oct-16" .

Комментарии:

1. вы хотите df.loc[df['Dates'] == 'Oct-16', 'Score 1'].mean()

Ответ №1:

Итерация по строкам не использует преимущества Pandas. Если вы хотите что-то сделать со столбцом на основе значений другого столбца, вы можете использовать .loc[] :

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

Первая часть .loc[] выбирает нужные строки, используя указанные вами критерии ( dataFrame['Dates'] == 'Oct-16' ). Во второй части указывается нужный столбец ( Score 1 ). Затем, если вы хотите получить среднее значение, вы можете просто поставить .mean() на конец:

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

Комментарии:

1. Спасибо за помощь. Похоже, это решает проблему, с которой я столкнулся.

Ответ №2:

Как насчет среднего значения для всех дат

 dataframe.groupby('Dates').['Score 1'].mean()
 

Ответ №3:

 import pandas as pd
import numpy as np
import os

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

dates = dataFrame["Dates"]
score1s = dataFrame["Score 1"]
result = []

for i in range(0,len(dates)):
    if dates[i] == "Oct-16":
        result.append(score1s[i])

print(result.mean())