现在一个数据聚合问题,大致如下:
有一个dataframe,几百行4列,列分别为‘imei’,‘phone’,‘type’,‘contact’。第四列也就是contact列的元素是json格式的字符串。现在我把dataframe根据前三列做groupby,即:
grouped = dt.groupby(['imei','phone','type'])['contact']
然后我自定义了一个函数quchong():
def quchong(arr):
arr.index = range(len(arr))
contact_list = []
for i in range(len(arr)):
data1 = Data(**json.loads(arr[i]))
for j in range(len(data1.data)):
data1.data[j]['email'] = tuple(data1.data[j]['email'])
data1.data[j]['number'] = tuple(data1.data[j]['number'])
contact1 = Contact(**(data1.data)[j])
contact_list.append(contact1)
setlist = set(contact_list)
cont_list = list(setlist)
dict_list = []
for k in range(len(cont_list)):
dict_list.append(cont_list[k].__dict__)
data_dict = {'data':dict_list}
return json.dumps(data_dict)
函数大意是把datafram的第四列数据进行去重工作。我这样调用:
group_quchong = grouped.agg(quchong)
就出错了。但是我把grouped里的每个分组元素提取出来单独调用quchong函数是没问题的。比如说,我这样做:
a=[];
for (k1,k2,k3),group in grouped:
a.append(group)
把每个分组元素提取出来放到列表里,然后单独调用quchong。即 quchong(a[0])是可以的。感觉是agg这一块出了问题。请问该怎么解决