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) 
  • Построение Pandas DataSeries.GroupBy
  • Получение содержимого из html и запись загруженного содержимого в определенном формате в CSV
  • Как подклассы pandas DataFrame?
  • Использование: для множественной нарезки в массиве списка или numpy
  • Pandas: проанализировать объединенные столбцы заголовков из Excel
  • Pandas - Заменить выбросы с помощью группового
  • Python: прочитайте несколько json-файлов из папки
  • Замена значений в мультииндексе pandas
  • Python - лучший язык программирования в мире.