Я пишу несколько сводных таблиц с помощью панд. Для многих из них мне нужно вернуть уникальные значения. В двумерной сводной таблице приведенный ниже код работает так, как должен. Когда я добавляю третье измерение, код возвращает счет, а не уникальный счетчик. Я подозреваю, что это имеет какое-то отношение к aggfunc, но не может определить, что его нужно изменить.Pandas: pivot_table уникальный счет возвращает count
код ниже:
data = pd.read_csv('scrubbed_data.csv', usecols = ['col_1', 'col_2', 'col_3'])
cd1 = pd.tools.pivot.pivot_table(data = data, values = 'col_2', index = 'col_1', columns = 'col_3', aggfunc=lambda x: len(x.unique()))
cd1.to_csv('pivot.csv')
Ниже приведен макет данных, в соответствии с просьбой:
col_1 col_2 col_3
location_1 id_1 type_1
location_1 id_1 type_1
location_2 id_1 type_1
location_1 id_2 type_3
location_3 id_3 type_4
Цель состоит в том, чтобы подсчитать количество уникальных записей в col_2 дал col_1 и col_3. Что должно появиться в:
. type_1 type_2 type_3 type_4
location_1 1 0 1 0
location_2 1 0 0 0
location_3 0 0 0 0
Однако следующий возвращается:
. type_1 type_2 type_3 type_4
location_1 2 0 1 0
location_2 1 0 0 0
location_3 0 0 0 0
Где [1,1] является значение обижая в матрице.
это поможет, если вы разместите образец вашего csv – elyase
Я не могу воспроизвести ваши результаты из этих данных, а так как это 'type_1' вместо' category_1', который не может быть результатом этого макета. Не могли бы вы привести самодостаточный пример? – DSM