我有一个函数,可以根据开始和结束日期对数据集进行排序,并返回最高值。我希望创建一个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)
答案 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:])]