क्या कोई मुझे बता सकता है कि निम्न कोड यह त्रुटि क्यों उत्पन्न करता है?

In [130]: [(str(i), len(list(set(pd.unique(myData[i]))))) for i in list(myData.columns)]
Traceback (most recent call last):

  File "<ipython-input-130-6f3c233b81d6>", line 1, in <module>
    [(str(i), len(list(set(pd.unique(myData[i]))))) for i in list(myData.columns)]

  File "C:\Users\mycomputer\anaconda\lib\site-packages\pandas\core\algorithms.py", line 368, in unique
    uniques = table.unique(values)

  File "pandas\_libs\hashtable_class_helper.pxi", line 1567, in pandas._libs.hashtable.PyObjectHashTable.unique

TypeError: unhashable type: 'dict'
1
statsNoob 21 अक्टूबर 2018, 04:08

2 जवाब

सबसे बढ़िया उत्तर

मैंने आपकी समस्या का पुनरुत्पादन किया है, इसका कारण यह है कि आप इसमें भाग रहे हैं क्योंकि आपके पास अपने पांडा डेटाफ्रेम सेल में dict टाइप है।

आप अपने डेटाफ़्रेम में dict टाइप कर सकते हैं लेकिन pd.unique() विफल हो जाता है क्योंकि यह तत्वों को हैश करने की कोशिश करता है यह निर्धारित करने के लिए कि कौन सा अद्वितीय है, और dict अप्राप्य है।

साथ ही, आपकी सूची में set की समझ आवश्यक नहीं है क्योंकि pd.unique पहले से ही इसका ध्यान रखती है।

मैंने उसी समस्या को ठीक उसी स्टैक ट्रेस के साथ पुन: पेश किया, जिसमें पांडा ने सूची की एक सूची पढ़ी, जिसमें से कुछ तत्व शब्दकोश थे। पढ़ना सफल रहा लेकिन फिर असफल रहा। एक समाधान यह हो सकता है कि यदि डेटाफ़्रेम बनाने से पहले डेटा को केवल कुछ या प्री-प्रोसेस किया जाए तो उसे प्रिंट किया जाए।

1
Rocky Li 21 अक्टूबर 2018, 01:26

जैसा कि कुछ उत्तरों में उल्लेख किया गया है, आपके डेटाफ्रेम में शायद एक ताना है। आप अद्वितीय का उपयोग करने से पहले मानों को स्ट्रिंग प्रकार में परिवर्तित कर सकते हैं जैसा कि नीचे दिखाया गया है:

[(str(i), len(my_data[i].astype(str).unique())) for i in list(my_data.columns)]
1
BernardL 21 अक्टूबर 2018, 02:54