#python #pandas #list #function
#python #панды #Список #функция
Вопрос:
Я пытаюсь определить функцию с этими целями.
- фрейм данных
df
- список стран (можно предположить, что все они находятся в
location
столбце фрейма данных)cl
- строка (которую можно считать столбцом (отличным от местоположения), который будет найден во фрейме данных.
column
Функция должна возвращать среднее значение для заданной метрики для заданного списка стран. с точки зрения непрофессионала. Я хочу, чтобы функция возвращала каждое заданное значение каждой страны в соответствии с тем, что column
упомянуто. затем sum
все записи в списке и разделите на len
, если это список
g7 = ['United States', 'Italy', 'Canada', 'Japan', 'United Kingdom', 'Germany', 'France']
Пока это мой код:
def countries_average(df,cl,column):
average = []
for country in enumerate(cl):
x = df.loc[df["location"] == country, column]
average.append(x)
y = sum(average)/len(average)
return average
вместо этого он возвращает строку из первой записи в списке. когда одна из записей в column
total_deaths
:
[28543 127410.0
Name: total_deaths, dtype: float64]
любая помощь в переборе этого списка и успешном добавлении в average
список.
Я пытался range(len(cl))
, но это тоже не помогло. любая помощь будет оценена.
Ответ №1:
Я думаю, это должно сработать:
def countries_average(df,cl,column):
return df[df['location'].isin(cl)][column].mean()
Комментарии:
1. Это ничего не возвращает, все мои результаты ouyput
Series([], Name: total_deaths, dtype: float64)
2. Если ваш x является числовым значением, то он должен работать. Не могли бы вы распечатать x?
3.
Series([], Name: total_deaths, dtype: float64)
4. Измените «x = df.loc [df [«location»] == страна, столбец]» на «x = df.loc [df [«location»] == страна, столбец] [0]» (добавьте [0] в конце) и скажите мне, что вы получаете.
5. Я обновил код, теперь он не должен доставлять вам больше проблем.