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