pandas.Series.sparse.to_coo#

Series.sparse.to_coo(row_levels=(0,), column_levels=(1,), sort_labels=False)[источник]#

Создание scipy.sparse.coo_matrix из Series с MultiIndex.

Используйте row_levels и column_levels для определения координат строк и столбцов соответственно. row_levels и column_levels — это имена (метки) или номера уровней. {row_levels, column_levels} должны быть разделением имен (или номеров) уровней MultiIndex.

Параметры:
row_levelsкортеж/список
column_levelsкортеж/список
sort_labelsbool, по умолчанию False

Сортировать метки строк и столбцов перед формированием разреженной матрицы. Когда row_levels и/или column_levels ссылаться на один уровень, установить в True для более быстрого выполнения.

Возвращает:
yscipy.sparse.coo_matrix
строкисписок (метки строк)
столбцысписок (метки столбцов)

Примеры

>>> s = pd.Series([3.0, np.nan, 1.0, 3.0, np.nan, np.nan])
>>> s.index = pd.MultiIndex.from_tuples(
...     [
...         (1, 2, "a", 0),
...         (1, 2, "a", 1),
...         (1, 1, "b", 0),
...         (1, 1, "b", 1),
...         (2, 1, "b", 0),
...         (2, 1, "b", 1)
...     ],
...     names=["A", "B", "C", "D"],
... )
>>> s
A  B  C  D
1  2  a  0    3.0
         1    NaN
   1  b  0    1.0
         1    3.0
2  1  b  0    NaN
         1    NaN
dtype: float64
>>> ss = s.astype("Sparse")
>>> ss
A  B  C  D
1  2  a  0    3.0
         1    NaN
   1  b  0    1.0
         1    3.0
2  1  b  0    NaN
         1    NaN
dtype: Sparse[float64, nan]
>>> A, rows, columns = ss.sparse.to_coo(
...     row_levels=["A", "B"], column_levels=["C", "D"], sort_labels=True
... )
>>> A

    with 3 stored elements and shape (3, 4)>
>>> A.todense()
matrix([[0., 0., 1., 3.],
[3., 0., 0., 0.],
[0., 0., 0., 0.]])
>>> rows
[(1, 1), (1, 2), (2, 1)]
>>> columns
[('a', 0), ('a', 1), ('b', 0), ('b', 1)]