Подскажите, пожалуйста, что ниже, я немного застрял.
Итак, в dataframe3 есть столбцы 'domain' и 'size'.Мой скрипт очищает домен и добавляет новый столбец с именем 'newdomain2'
. Я добавляю столбец ниже и просматриваю кадр данных, и он выглядит правильно.
Итак, df4 должен быть агрегированнымверсия df3 (сгруппирована по домену + сумма (размер), но когда я пытаюсь описать ниже, я получаю эту ошибку:
TypeError: unhashable type: 'list'
Я должен отметить, чтоесли я использую «домен» вместо «cleandomain2» в том же сценарии, он работает без ошибок.
Можете ли вы помочь мне понять, почему это может быть?
df3['newdomain2']=cleandomain
#show df3
df3
df4 = df3.groupby(['newdomain2'])[['size']].sum()
Вот сценарий, который я использую для генерации новых значений столбцов и добавления значений к фрейму данных
for x in index:
#if it ends with a number, it's an IP
if str(x[len(x)-1]).isnumeric():
cleandomain.append(str(x[0])+'.'+str(x[1])+'.*.*')
#if its in the CDN list, take a subdomain as well
elif str(x[len(x)-2]).rstrip() in cdns:
cleandomain.append(str(x[len(x)-3])+'.'+str(x[len(x)-2])+'.'+str(x[len(x)-1]))
elif str(x[len(x)-3]).rstrip() in cdns:
cleandomain.append(str(x[len(x)-4])+'.'+str(x[len(x)-3])+'.'+str(x[len(x)-2])+'.'+ str(x[len(x)-1]))
#if its in the TLD list, do this
elif str(x[len(x)-2]).rstrip()+'.'+ str(x[len(x)-1]).rstrip() in tld:
cleandomain.append(str(x[len(x)-3])+'.'+str(x[len(x)-2])+'.'+ str(x[len(x)-1]))
elif str(x[len(x)-1]) in tld:
cleandomain.append(str(x[len(x)-2])+'.'+ str(x[len(x)-1]))
#if its not in the TLD list, do this
else:
cleandomain.append(x)
#add column do df3
df3['newdomain2']=cleandomain