У меня есть фрейм данных, в котором один из столбцов выводит следующее, когда я запрашиваю уникальные значения (я изначально думал о ручном отображении счетчиков, если было меньше комбинаций):
df.amenities.unique()
array(['{TV,Wifi,Kitchen,Elevator,Heating,Washer,"First aid kit","Fire extinguisher",Essentials,Hangers,"Hair dryer",Iron,"Laptop friendly workspace","Private entrance"}',
'{TV,Wifi,Kitchen,"Free parking on premises","Indoor fireplace",Heating,"Family/kid friendly",Washer,"First aid kit","Fire extinguisher",Essentials,"Lock on bedroom door",Hangers,"Hair dryer",Iron,"Laptop friendly workspace","Private entrance"}'])
Чтобы разобраться с этим массивом удобств, я решил сначала избавиться от кавычек:
df['amenities'] = df['amenities'].str.replace('"', '')
Моя стратегия состояла в том, чтобы посчитать количество запятых, появившихся в каждом элементе массива, добавить 1, чтобы учесть трейлинг пропущенная запятая и использование reset_index для присвоения имени столбцу, в котором я хочу, чтобы счетчики отображались в.
(df['amenities'].str.count(',').add(1).sum().reset_index(name='amenities_count'))
Что не совсем работает, потому что я получаю ошибку:
AttributeError: 'numpy.int64' object has no attribute 'reset_index'
Если Можно ли объяснить, почему это не очень хороший подход и что может быть хорошей альтернативой?
Спасибо за потраченное время.
Чтобы ответить Бернарду:
Dataframe:
Apt Counties amenities
S1 C1 {TV, "Kitchen", "WiFi"}
S1 C1 {"Hair dryer"}
S2 C1 {"Heating", Essentials}
S2 C2 {"Cable", Kitchen, "WiFi"}
Output:
Apt Counties amenities amenities_counts
S1 C1 {TV, "Kitchen", "WiFi"} 3
S1 C1 {"Hair dryer"} 1
S2 C1 {"Heating", Essentials} 2
S2 C2 {"Cable", Kitchen, "WiFi"} 3