Python ValueError Pandas: Истинное значение Серии неоднозначно - PullRequest
0 голосов
/ 11 декабря 2018

, несмотря на то, что это дублированный вопрос, я не могу найти точное решение моей проблемы ниже ..

У меня есть pandas dataframe под названием 'data1', и я хочу получить количество уникальных категорийстолбцы, в которых тип данных - «объект».ниже приведен код, который я использовал

for col in data1.columns:
if data1[col].dtypes =='object':
    unique_category = len(data1[col].unique())
    print("feature '{col}' has '{unique_category}' unique catogories".format(col=col,unique_category=unique_category))

, этот код отлично работал в другой программе.но на этот раз он дает ниже ошибку

V

alueError                                Traceback (most recent call last)
<ipython-input-178-03999268fffa> in <module>()
      1 for col in data1.columns:
----> 2     if data1[col].dtypes =='object':
      3         unique_category = len(data1[col].unique())
      4         print("feature '{col}' has '{unique_category}' unique catogories".format(col=col,unique_category=unique_category))
      5 

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
   1571         raise ValueError("The truth value of a {0} is ambiguous. "
   1572                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1573                          .format(self.__class__.__name__))
   1574 
   1575     __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

есть ли причина, чтобы это выдало сообщение об ошибке?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Вы можете просто использовать select_dtypes :

for col in data1.select_dtypes('object'):
    print(f'feature {col} has {data1[col].nunique()} unique categories')

Он автоматически выберет столбцы объекта для вас

0 голосов
/ 11 декабря 2018

Вот пример:

# Create data set
d = {'foo':[100, 111, 222], 
     'bar':['333', '444', '555']}
df = pd.DataFrame(d)
df

#     bar   foo
# 0   333   100
# 1   444   111
# 2   555   222

df.info()

# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 2 columns):
# bar    3 non-null object             # <- object type column
# foo    3 non-null int64
# dtypes: int64(1), object(1)
# memory usage: 128.0+ bytes

for col in range(len(df.dtypes)):
    if df.dtypes[col] == 'O':           # <- can also use `O`
        unique_category = len(df.loc[:,df.columns[col]].unique())
        print("feature '{col}' has '{unique_category}' unique categories".format(col=df.columns[col],unique_category=unique_category))
# feature 'bar' has '3' unique categories
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...