Skip to content

Commit 3134cb2

Browse files
committed
BUG: fix sparse_frame printing (bug introduced in dtypes)
MockBlockManager didn't support blocks method
1 parent cb5e7dd commit 3134cb2

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

pandas/sparse/frame.py

+9
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ def shape(self):
4242
def axes(self):
4343
return [self.sp_frame.columns, self.sp_frame.index]
4444

45+
@property
46+
def blocks(self):
47+
""" return our series in the column order """
48+
s = self.sp_frame._series
49+
return [ self.iget(i) for i in self.sp_frame.columns ]
4550

4651
class SparseDataFrame(DataFrame):
4752
"""
@@ -235,6 +240,10 @@ def to_dense(self):
235240
data = dict((k, v.to_dense()) for k, v in self.iteritems())
236241
return DataFrame(data, index=self.index)
237242

243+
def get_dtype_counts(self):
244+
from collections import Counter
245+
return Series(Counter([ v.dtype.name for k, v in self.iteritems() ]))
246+
238247
def astype(self, dtype):
239248
raise NotImplementedError
240249

pandas/sparse/tests/test_sparse.py

+16
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,22 @@ def test_constructor_convert_index_once(self):
821821
sdf = SparseDataFrame(columns=range(4), index=arr)
822822
self.assertTrue(sdf[0].index is sdf[1].index)
823823

824+
def test_dtypes(self):
825+
df = DataFrame(np.random.randn(10000, 4))
826+
df.ix[:9998] = np.nan
827+
sdf = df.to_sparse()
828+
829+
result = sdf.get_dtype_counts()
830+
expected = Series({ 'float64' : 4 })
831+
assert_series_equal(result, expected)
832+
833+
def test_str(self):
834+
df = DataFrame(np.random.randn(10000, 4))
835+
df.ix[:9998] = np.nan
836+
sdf = df.to_sparse()
837+
838+
str(sdf)
839+
824840
def test_array_interface(self):
825841
res = np.sqrt(self.frame)
826842
dres = np.sqrt(self.frame.to_dense())

0 commit comments

Comments
 (0)