如何为函数创建循环?

时间:2018-11-16 14:33:45

标签: python pandas dataframe

我有一个函数,可以根据开始和结束日期对数据集进行排序,并返回最高值。我希望创建一个for循环,使我可以一次性运行所有五年范围的函数。

def get_topName(dataset, start_year, end_year):
    subset = dataset[(dataset.year >= start_year) & (dataset.year <= end_year)
    subset2 = subset.sort_values("n" , ascending = False)
return subset3[0:1]

我希望在以下年份范围内循环使用此功能:1950-1960、1960-1970、1970-1980、1980-1990和1990-2000。

我正在尝试类似的方法,但是无法使其正常工作。我也不确定如何正确创建日期范围列表。

for int in decades:
    get_topName(baby_df, start_year, end_year)

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

import '../../../models/models.dart';

abstract class PickupEvent {}

class ButtonPressed extends PickupEvent {
  final PickupModel currentPickup;

  ButtonPressed({
    @required this.currentPickup
  });
}

答案 1 :(得分:0)

这里是一个建议,使用np.vectorize()

import numpy as np

new_func = np.vectorize(get_topName)
output = new_func(dataset, [list_of_start_years], [list_of_end_years])

来自documentation的笔记,

  

提供矢量化功能主要是为了方便,而不是为了提高性能。实现本质上是一个for循环。

答案 2 :(得分:0)

由于您的函数具有多个参数,因此您可以解压缩并使用map方法,也可以使用列表推导。另外,您可以使用itertools.partial方法并在其上使用map。在这种情况下,最简单的方法是列表理解。这是一个示例:

years    = range(1950, 2000, 10)
topNames = [get_topName(dataset, start, end) for start, stop in zip(years[:-1], years[1:])]