python groupby之后对数据聚合aggregate的问题

现在一个数据聚合问题,大致如下:
有一个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这一块出了问题。请问该怎么解决

阅读 5.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题