現在一個資料聚合問題,大緻如下:
有一個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這一塊出了問題。請問該怎麼解決