Pandas dataFrame.nunique (): («не подлежащий определению тип:« список »,« произошел в столбцах индекса ») - PullRequest
0 голосов
/ 11 июня 2018

Я хочу применить функцию .nunique () к полному фрейму данных.

На следующем снимке экрана видно, что он содержит 130 функций. Снимок экрана с формой и столбцами кадра данных. Цель состоит в том, чтобы получить количество различных значений для объекта.Я использую следующий код (который работал на другом dataFrame).

def nbDifferentValues(data):
    total = data.nunique()
    total = total.sort_values(ascending=False)
    percent = (total/data.shape[0]*100)
    return pd.concat([total, percent], axis=1, keys=['Total','Pourcentage'])

diffValues = nbDifferentValues(dataFrame)

И код завершается ошибкой в ​​первой строке, и я получаю следующую ошибку, которую я не знаю, как решить ("неприемлемый тип: 'list' ", 'произошло в столбцах индекса') : Трассировка ошибки

1 Ответ

0 голосов
/ 11 июня 2018

Возможно, у вас есть столбец, содержимое которого представляет собой списки.

Поскольку списки в Python являются изменяемыми, они не подлежат изменению.

import pandas as pd

df = pd.DataFrame([
    (0, [1,2]),
    (1, [2,3])    
])

#  raises "unhashable type : 'list'" error
df.nunique()

РЕШЕНИЕ: не используйте изменяемые структуры (например, списки) в вашем фрейме данных :

df = pd.DataFrame([
    (0, (1,2)),
    (1, (2,3))    
])

df.nunique()

#  0    2
#  1    2
#  dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...