test_reshape.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import numpy as np
  2. import pytest
  3. import pandas as pd
  4. import pandas.util.testing as tm
  5. @pytest.fixture
  6. def sparse_df():
  7. return pd.SparseDataFrame({0: {0: 1}, 1: {1: 1}, 2: {2: 1}}) # eye
  8. @pytest.fixture
  9. def multi_index3():
  10. return pd.MultiIndex.from_tuples([(0, 0), (1, 1), (2, 2)])
  11. def test_sparse_frame_stack(sparse_df, multi_index3):
  12. ss = sparse_df.stack()
  13. expected = pd.SparseSeries(np.ones(3), index=multi_index3)
  14. tm.assert_sp_series_equal(ss, expected)
  15. def test_sparse_frame_unstack(sparse_df):
  16. mi = pd.MultiIndex.from_tuples([(0, 0), (1, 0), (1, 2)])
  17. sparse_df.index = mi
  18. arr = np.array([[1, np.nan, np.nan],
  19. [np.nan, 1, np.nan],
  20. [np.nan, np.nan, 1]])
  21. unstacked_df = pd.DataFrame(arr, index=mi).unstack()
  22. unstacked_sdf = sparse_df.unstack()
  23. tm.assert_numpy_array_equal(unstacked_df.values, unstacked_sdf.values)
  24. def test_sparse_series_unstack(sparse_df, multi_index3):
  25. frame = pd.SparseSeries(np.ones(3), index=multi_index3).unstack()
  26. arr = np.array([1, np.nan, np.nan])
  27. arrays = {i: pd.SparseArray(np.roll(arr, i)) for i in range(3)}
  28. expected = pd.DataFrame(arrays)
  29. tm.assert_frame_equal(frame, expected)