ENH: get_dtype_counts publicized and added dtypes property · pandas-dev/pandas@dca3c5c (original) (raw)

3 files changed

lines changed

Original file line number Diff line number Diff line change
@@ -13,6 +13,10 @@ pandas 0.4.1
13 13
14 14 This is a bug fix release
15 15
16 +**New features / modules**
17 +
18 + - Added new `DataFrame` methods `get_dtype_counts` and property `dtypes`
19 +
16 20 **Bug fixes**
17 21
18 22 - Fixed DataFrame constructor bug causing downstream problems (e.g. .copy()
Original file line number Diff line number Diff line change
@@ -648,19 +648,23 @@ def info(self, verbose=True, buf=None):
648 648 % (_stringify(cols[0]),
649 649 _stringify(cols[-1])))
650 650
651 -counts = self._get_dtype_counts()
651 +counts = self.get_dtype_counts()
652 652 dtypes = ['%s(%d)' % k for k in sorted(counts.iteritems())]
653 653 buf.write(u'dtypes: %s' % ', '.join(dtypes))
654 654
655 -def _get_dtype_counts(self):
655 +@property
656 +def dtypes(self):
657 +return self.apply(lambda x: x.dtype)
658 +
659 +def get_dtype_counts(self):
656 660 counts = {}
657 661 for _, series in self.iteritems():
658 662 if series.dtype in counts:
659 663 counts[series.dtype] += 1
660 664 else:
661 665 counts[series.dtype] = 1
662 666
663 -return counts
667 +return Series(counts)
664 668
665 669 #----------------------------------------------------------------------
666 670 # properties for index and columns
Original file line number Diff line number Diff line change
@@ -1543,6 +1543,12 @@ def test_info(self):
1543 1543 self.frame.info(buf=io)
1544 1544 self.tsframe.info(buf=io)
1545 1545
1546 +def test_dtypes(self):
1547 +self.mixed_frame['bool'] = self.mixed_frame['A'] > 0
1548 +result = self.mixed_frame.dtypes
1549 +expected = self.mixed_frame.dtypes
1550 +assert_series_equal(result, expected)
1551 +
1546 1552 def test_append(self):
1547 1553 begin_index = self.frame.index[:5]
1548 1554 end_index = self.frame.index[5:]