我有一个元组列表
(something1, 500)
(something1, 200)
(something1, 300)
(something2, 200)
(something2, 600)
(something2, 400)
我已经在pySpark中编写了一个函数来进行计算,得到这样的结果。该函数基本上需要总结发生的计数总数
(something1, 1000),
(something2, 1200)
到目前为止我的功能
def add_function(key, value):
last_key = None
recur_total = 0
key, value = join_data[0][0], join_data[0][1]
if last_key == key:
recur_total+ = value
else:
if last_key:
recur_total = value
if last_key == key:
recur_total = value
last_key = key
if last_key == key:
return(last_key, value)
我面临的问题
我做错了什么以及如何纠正这个问题?
答案 0 :(得分:1)
- 我无法在pySpark控制台上将该功能粘贴为一个功能。它被分成多个提示。
醇>
我不明白你的意思。只要您的缩进正确,“多个提示”就会正确创建一个函数。
- 它表示第6行的语法错误(recur_total + = value)。
醇>
此错误表示您似乎正确粘贴了代码。要修复错误,请仔细检查提供语法错误的行上的间距。
答案 1 :(得分:1)
其他人已经指出了关于适当缩进的问题的答案,但是关于整个功能本身我的2美分..
您想要实现的任务可以使用groupby
itertools
来完成
from itertools import groupby
data = [ ('something1', 500),
('something1', 200),
('something1', 300),
('something2', 200),
('something2', 600),
('something2', 400)]
for key, group in groupby(data, lambda x: x[0]):
result = 0
for things in group:
result = result + things[1]
print(key,result)