Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表上循环,以便将相同的函数应用于多个数据集_Python_Python 2.7_List_Loops_Oop - Fatal编程技术网

Python 在列表上循环,以便将相同的函数应用于多个数据集

Python 在列表上循环,以便将相同的函数应用于多个数据集,python,python-2.7,list,loops,oop,Python,Python 2.7,List,Loops,Oop,我正在寻找一种将函数应用于多个rdd的方法(rdd:弹性分布式数据集)。我正在使用PySpark,我必须通过对所有原始数据集应用相同的函数来获得6个新的RDD。我有这样的想法: def define_CohortPeriods(d_date): do something return something if __name__ == '__main__': try: first_OrderPeriod = define_CohortPeriods(

我正在寻找一种将函数应用于多个rdd的方法(rdd:弹性分布式数据集)。我正在使用PySpark,我必须通过对所有原始数据集应用相同的函数来获得6个新的RDD。我有这样的想法:

def define_CohortPeriods(d_date):

    do something

    return something

if __name__ == '__main__':

    try:

       first_OrderPeriod = define_CohortPeriods(d_date = '2016-10-19')
       second_OrderPeriod = define_CohortPeriods(d_date = '2016-10-20')
       third_OrderPeriod = define_CohortPeriods(d_date = '2016-10-21')
       fourth_OrderPeriod = define_CohortPeriods(d_date = '2016-10-22')
       fifth_OrderPeriod = define_CohortPeriods(d_date = '2016-10-23')
       sixth_OrderPeriod = define_CohortPeriods(d_date = '2016-10-24')


   except ValueError:

       print "Error"
from datetime import date, timedelta as td

first_date = datetime.datetime.strptime('2016-10-19', '%Y-%m-%d')
last_date = datetime.datetime.strptime('2016-10-24', '%Y-%m-%d')

deltaDate = last_date - first_date

for i in range(deltaDate.days + 1):

    print d1 + td(days=i)
我只想为我的代码提供两个参数,例如第一个和最后一个日期,并执行如下操作:

def define_CohortPeriods(d_date):

    do something

    return something

if __name__ == '__main__':

    try:

       first_OrderPeriod = define_CohortPeriods(d_date = '2016-10-19')
       second_OrderPeriod = define_CohortPeriods(d_date = '2016-10-20')
       third_OrderPeriod = define_CohortPeriods(d_date = '2016-10-21')
       fourth_OrderPeriod = define_CohortPeriods(d_date = '2016-10-22')
       fifth_OrderPeriod = define_CohortPeriods(d_date = '2016-10-23')
       sixth_OrderPeriod = define_CohortPeriods(d_date = '2016-10-24')


   except ValueError:

       print "Error"
from datetime import date, timedelta as td

first_date = datetime.datetime.strptime('2016-10-19', '%Y-%m-%d')
last_date = datetime.datetime.strptime('2016-10-24', '%Y-%m-%d')

deltaDate = last_date - first_date

for i in range(deltaDate.days + 1):

    print d1 + td(days=i)
其中:

2016-10-19 00:00:00
2016-10-20 00:00:00
2016-10-21 00:00:00
2016-10-22 00:00:00
2016-10-23 00:00:00
2016-10-24 00:00:00
最后,遍历这个日期列表,每次都将一个日期与d_日期关联,并分别获得我的预期输出:first_OrderPeriod、second_OrderPeriod、third_OrderPeriod等等


最有效的方法是什么?谢谢

使用列表存储您的
orderPeriod
值,然后按索引访问它们。因为我们将它们存储在一个列表中,所以我们可以使用列表理解来构建该列表

dates_list = [d1 + td(days=i) for i in range(deltaDate.days +1)]
orderPeriods = [define_CohortPeriods(d_date) for d_date in dates_list]

不太清楚
define_CohortPeriods
是接受字符串还是
datetime
对象。不过,您可能应该同时使用
date
对象,因为您没有使用
datetime
对象的
time
部分。

使用列表存储
orderPeriod
值,然后通过索引访问它们。因为我们将它们存储在一个列表中,所以我们可以使用列表理解来构建该列表

dates_list = [d1 + td(days=i) for i in range(deltaDate.days +1)]
orderPeriods = [define_CohortPeriods(d_date) for d_date in dates_list]
不太清楚
define_CohortPeriods
是接受字符串还是
datetime
对象。不过,您可能应该同时使用
date
对象,因为您没有使用
datetime
对象的
time
部分