У меня есть pandas фрейм данных следующей структуры:
Col1 | Col2 | Col3
-------+---------------------+--------------
0 6 | [a,b,c,d,e,f] | ....
1 4 | [a,g,h,i] | ....
2 5 | [a,b,j,k,l] | ....
У меня есть список элементов, которые мне нужно удалить из всех списков в Col2 [a,b,h]
Наконец, мне нужно перевести его в
Col1 | Col2 | Col3
-------+-----------------+--------------
0 4 | [c,d,e,f] | ....
1 2 | [g,i] | ....
2 3 | [j,k,l] | ....
, где Col1
- количество элементов в Col2
Я пробовал
def modify_data(dataset):
ds = dataset.copy()
Col2 = dataset['Col2']
remove_list = [a,b,h]
removed_col2 = []
counts = []
for i,row in enumerate(Col2):
cleaned = np.array(list(set(row)-set(remove_list)))
removed_col2.append(cleaned)
counts.append(len(cleaned))
ds.loc[:,'Col1'] = counts
ds.loc[:,'Col2'] = removed_col2
return ds
Но производительность жаль. Например, для набора данных из 200 000 строк.
CPU times: user 11min 26s, sys: 24.2 s, total: 11min 50s
Wall time: 11min 48s