pandas DataFrame.from_dict не приводит к правильному мультииндексу, где ключи dict являются кортежами - PullRequest
0 голосов
/ 02 ноября 2018

Когда я хочу преобразовать dict с ключами кортежа в информационный фрейм с мультииндексом, я использовал метод pandas.DataFrame.from_dict. Но я финансирую результат, похоже, неверный. Вот мой код:

dict_var1 = Counter({('w1', 's1'): 47, ('w2', 's1'): 40, ('w3', 's2'): 35, ('w1', 's3'): 30, ('w4', 's4'): 28})
frame_var1 = pd.DataFrame.from_dict(dict_var1, orient='index', columns=['num'])
print(frame_var1)

И результат:

                 num
      (w1, s1)   47
      (w2, s1)   40
      (w3, s2)   35
      (w1, s3)   30
      (w4, s4)   28

Индекс кадра не является многоуровневым. Я очень смущен результатом. Кто-нибудь может прокомментировать: 1. Почему эта функция получает такой результат? 2. Как мне достичь своих целей?

Надеюсь на ответ. Большое спасибо.

1 Ответ

0 голосов
/ 02 ноября 2018

Создать серию с MultiIndex и для одного столбца DataFrame используйте Series.to_frame:

frame_var1 = pd.Series(dict_var1).to_frame('num')
print(frame_var1)

       num
w1 s1   47
w2 s1   40
w3 s2   35
w1 s3   30
w4 s4   28

Другое решение - создать MultiIndex с помощью кортежей с MultiIndex.from_tuples:

mux = pd.MultiIndex.from_tuples(dict_var1.keys())
frame_var1 = pd.DataFrame(list(dict_var1.values()), index=mux, columns=['num'])

print(frame_var1)

       num
w1 s1   47
w2 s1   40
w3 s2   35
w1 s3   30
w4 s4   28
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...