У меня есть словарь, для которого в качестве значения используется другой словарь, а для другого словаря - значение.
Например,
{'A' : {'a' : ['1', '2', '3'], 'b' : ['4', '5'], 'c' : ['6']},
'B' : {'a' : ['7'], 'b' : ['8', '9']}}
Я хочу создать Pandas DataFrame, который имеет A
, B
в качестве индексов, a
, b
, c
в качестве столбцов.
То, что я сделал, это:
df = pd.DataFrame.from_dict(dictionary, orient='index')
df.describe()
Но я получил сообщение об ошибке:
TypeError Traceback (most recent call last)
<ipython-input-6-88dc07bc979e> in <module>()
6 df = pd.DataFrame.from_dict(dict_data, orient='index')
----> 7 df.describe() # print df
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in
describe(self, percentiles, include, exclude)
6825 data = self.select_dtypes(include=include, exclude=exclude)
6826
-> 6827 ldesc = [describe_1d(s) for _, s in data.iteritems()]
6828 # set a convenient order for rows
6829 names = []
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in <listcomp>(.0)
6825 data = self.select_dtypes(include=include, exclude=exclude)
6826
-> 6827 ldesc = [describe_1d(s) for _, s in data.iteritems()]
6828 # set a convenient order for rows
6829 names = []
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in describe_1d(data)
6808 return describe_numeric_1d(data)
6809 else:
-> 6810 return describe_categorical_1d(data)
6811
6812 if self.ndim == 1:
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in describe_categorical_1d(data)
6782 def describe_categorical_1d(data):
6783 names = ['count', 'unique']
-> 6784 objcounts = data.value_counts()
6785 count_unique = len(objcounts[objcounts != 0])
6786 result = [data.count(), count_unique]
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\base.py in value_counts(self, normalize, sort, ascending, bins, dropna)
869 from pandas.core.algorithms import value_counts
870 result = value_counts(self, sort=sort, ascending=ascending,
--> 871 normalize=normalize, bins=bins, dropna=dropna)
872 return result
873
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\algorithms.py in value_counts(values, sort, ascending, normalize, bins, dropna)
550
551 else:
--> 552 keys, counts = _value_counts_arraylike(values, dropna)
553
554 if not isinstance(keys, Index):
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\algorithms.py in _value_counts_arraylike(values, dropna)
595 # TODO: handle uint8
596 f = getattr(htable, "value_count_{dtype}".format(dtype=ndtype))
--> 597 keys, counts = f(values, dropna)
598
599 mask = isna(values)
pandas/_libs/hashtable_func_helper.pxi in pandas._libs.hashtable.value_count_object()
pandas/_libs/hashtable_func_helper.pxi in pandas._libs.hashtable.value_count_object()
TypeError: unhashable type: 'list'
Как я могу это исправить?
Я хочу получить результат как
a b c
A 1 2 3 4 5 6
B 7 8 9