Pandas: добавление нулевых значений, где нет строк (разреженных)

У меня есть Pandas DataFrame с MultiIndex. MultiIndex имеет значения в диапазоне от (0,0) до (1000,1000) , а столбец имеет два поля p и q .

Однако DataFrame разрежен . То есть, если бы не было измерения, соответствующего конкретному индексу (скажем, (3,2) ), для него не будет никакой строки (3,2) . Я бы хотел сделать это не разреженным, заполнив эти строки p=0 and q=0 . Продолжая пример, если я делаю df.loc[3].loc[2] , я хочу, чтобы он возвращал p=0 q=0 , а не No Such Record (как это сейчас делает).

Уточнение: «разреженным», я имею в виду это только в том смысле, в котором я его использовал, что нулевые значения опущены. Я не имею в виду ничего в Pandas или Numpy.

One Solution collect form web for “Pandas: добавление нулевых значений, где нет строк (разреженных)”

Рассмотрим это df

 data = { (1, 0): dict(p=1, q=1), (3, 2): dict(p=1, q=1), (5, 4): dict(p=1, q=1), (7, 6): dict(p=1, q=1), } df = pd.DataFrame(data).T df pq 1 0 1 1 3 2 1 1 5 4 1 1 7 6 1 1 

Используйте reindex с fill_value=0 из построенного pd.MultiIndex.from_product

 mux = pd.MultiIndex.from_product([range(8), range(8)]) df.reindex(mux, fill_value=0) pq 0 0 0 0 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 1 0 1 1 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 2 0 0 0 1 0 0 2 0 0 3 0 0 

ответ на комментарий
Вы можете получить min, max уровней индекса, подобных этому

 def mn_mx(idx): return idx.min(), idx.max() mn0, mx0 = mn_mx(df.index.levels[0]) mn1, mx1 = mn_mx(df.index.levels[1]) mux = pd.MultiIndex.from_product([range(mn0, mx0 + 1), range(mn1, mx1 + 1)]) df.reindex(mux, fill_value=0) 
  • python: конвертировать числовые данные в pandas dataframe в float в присутствии строк
  • лучший способ добавить последовательный столбец счетчика, используя pandas.groupby
  • Pandas суммируют по столбцам и делят каждую ячейку от этого значения
  • Pandas Groupby TimeGrouper и применять
  • python pandas сглаживает данные в список
  • pandas: groupby и переменные веса
  • Pivot Tables или Group By для Pandas?
  • Лучший способ добавить постоянный столбец к кадру данных pandas
  •  
    Interesting Posts for Van-Lav

    Документирование записи сценария python (__name__ == '__main__') с использованием sphinx

    API базы данных: как работать с несколькими, где условие в Python

    python argparse задает поведение, если аргументы не предоставлены

    Как повторно создать исключение в вложенных блоках try / except?

    Lazy SAX XML-анализатор с остановкой / возобновлением

    Корреляция DataFrame дает NaN, хотя его значения являются целыми числами

    Ошибка при работе с excel с использованием python

    Flask, развернутый с помощью twistd: Не удалось загрузить приложение: объект «NoneType» не имеет атрибута «startswith»

    Почему я не могу импортировать из псевдонима модуля?

    Понимание gc.get_referrers

    Python – преобразование sock.recv в строку

    Использование «Редактировать с помощью IDLE» с помощью скрипта Python 2.6.5

    Удалите или замените экран заставки kivy при запуске

    Запуск Scrapy из скрипта – Hangs

    Почему Python пишет одну неправильно закодированную строку каждые две строки?

    Python - лучший язык программирования в мире.