如何在定义自己的函数时迭代列表中的条目
Posted
技术标签:
【中文标题】如何在定义自己的函数时迭代列表中的条目【英文标题】:how to iterate over entries in list while defining own function 【发布时间】:2021-01-16 04:01:27 【问题描述】:我正在尝试定义具有这些目标的函数。
一个数据帧df
国家/地区列表(可以假设所有国家/地区都可以在 DataFrame 的location
列中找到)
cl
一个字符串(可以假设是一个列(除了位置),它将在 DataFrame 中找到。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()
【讨论】:
这不返回任何东西,我所有的输出返回都是Series([], Name: total_deaths, dtype: float64)
如果你的 x 是一个数值,那么它应该可以工作。你能打印 x 吗?
Series([], Name: total_deaths, dtype: float64)
更改 "x = df.loc[df["location"] == country, column]" 为 "x = df.loc[df["location"] == country, column][ 0]"(在末尾添加 [0])并告诉我你得到了什么。
我更新了代码,现在应该不会再给您带来任何问题了。以上是关于如何在定义自己的函数时迭代列表中的条目的主要内容,如果未能解决你的问题,请参考以下文章