MCVE
df = pd.DataFrame(
np.random.randint(1, 100, (100, 9)), columns=[f'col{i}' for i in range(1, 10)])
df[['col1', 'col2', 'col6', 'col8', 'col9']] = \
df[['col1', 'col2', 'col6', 'col8', 'col9']].astype(object)
>>> df.dtypes
col1 object
col2 object
col3 int32
col4 int32
col5 int32
col6 object
col7 int32
col8 object
col9 object
dtype: object
Вы можете использовать exclude
аргумент select_dtypes
, чтобы исключить все числовые столбцы из вашего вычисления.
df.select_dtypes(exclude='number').nunique().reindex(df.columns)
col1 62.0
col2 63.0
col3 NaN
col4 NaN
col5 NaN
col6 63.0
col7 NaN
col8 65.0
col9 61.0
dtype: float64
Вы можете поиграть с параметрами include
и exclude
до select_dtypes
, чтобы точно соответствовать столбцам, которые вы хотите включить.