2017-03-10 102 views
0

我有一個熊貓數據框my_dfmy_df中的列animals具有數據類型'set'。然後我試着用下面的代碼在此列animals檢查有多少不同的值(套):熊貓:檢查數據類型爲'set'的列的唯一值

print(my_df.animals.unique()) 

但得到了以下錯誤:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-13-e41c02e0e954> in <module>() 

    11 
---> 12 print(my_df.animals.unique()) 


/usr/local/lib/python3.4/dist-packages/pandas/core/series.py in unique(self) 
    1237  @Appender(base._shared_docs['unique'] % _shared_doc_kwargs) 
    1238  def unique(self): 
-> 1239   result = super(Series, self).unique() 
    1240   if is_datetime64tz_dtype(self.dtype): 
    1241    # to return array of Timestamp with tz 

/usr/local/lib/python3.4/dist-packages/pandas/core/base.py in unique(self) 
    971   else: 
    972    from pandas.core.nanops import unique1d 
--> 973    result = unique1d(values) 
    974   return result 
    975 

/usr/local/lib/python3.4/dist-packages/pandas/core/nanops.py in unique1d(values) 
    809  else: 
    810   table = _hash.PyObjectHashTable(len(values)) 
--> 811   uniques = table.unique(_ensure_object(values)) 
    812  return uniques 
    813 

pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.unique (pandas/hashtable.c:14383)() 

TypeError: unhashable type: 'set' 

回答

1

我不知道這正是你想要什麼,但你可以試試看:

In [135]: df 
Out[135]: 
    animals 
0  {1, 2} 
1 {1, 2, 3} 
2  {1, 2} 

In [136]: df.animals.astype(str).unique() 
Out[136]: array(['{1, 2}', '{1, 2, 3}'], dtype=object)