Python 在列表上循环,以便将相同的函数应用于多个数据集
我正在寻找一种将函数应用于多个rdd的方法(rdd:弹性分布式数据集)。我正在使用PySpark,我必须通过对所有原始数据集应用相同的函数来获得6个新的RDD。我有这样的想法: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(
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
部分