Что плохого в том, чтобы добавить строку в кадр данных pandas? - PullRequest
0 голосов
/ 24 мая 2018

Я создаю простой фрейм данных, подобный следующему.

cache_df = pd.DataFrame(columns=['ticker', 'maturity', 'rate', 'datetime'])
cache_df = cache_df.set_index(['ticker', 'maturity'])

Когда я пытаюсь добавить строку, я получаю сообщение об ошибке, что не могу обернуться.Может ли кто-нибудь помочь мне понять, почему?

cache_df.loc[symbolName, expiry] = [rate, updateTime]

Я получил

ValueError: невозможно установить, используя многоиндексный индексатор выбора, длина которого отличается от значения

и мой кадр данных выглядит странно после сообщения об ошибке.

Out[106]: 
                rate datetime  2016-11-18 00:00:00
ticker maturity                                   
GECC             NaN      NaN                  NaN

, если я делаю

cache_df.loc[[1,2]] = [3,4]

Я получаю другую ошибку:

ValueError: массив нулевого размера до максимума операции сокращения, у которого нет идентификатора

1 Ответ

0 голосов
/ 24 мая 2018

Хорошо, потратив почти два часа на поиски возможных причин, я понял, почему.Проблема в мультииндексации.Я думаю, что более полезное сообщение об ошибке может быть использовано здесь.

В мультииндексированном фрейме данных loc должно быть явным.

Следующий код решает проблему.

cache_df.loc[(symbolName, expiry), :] = [rate, updateTime]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...