Skip to content

Commit db19f2d

Browse files
committed
Merge pull request #9936 from sinhrks/timegrouper_size
BUG: GroupBy.size doesnt attach index name properly if grouped by TimeGr...
2 parents ad1abce + d95e2e2 commit db19f2d

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

doc/source/whatsnew/v0.16.1.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ Bug Fixes
126126
- Bug in which ``SparseDataFrame`` could not take `nan` as a column name (:issue:`8822`)
127127
- Bug in ``to_msgpack`` and ``read_msgpack`` zlib and blosc compression support (:issue:`9783`)
128128

129-
129+
- Bug ``GroupBy.size`` doesn't attach index name properly if grouped by ``TimeGrouper`` (:issue:`9925`)
130130

131131

132132

pandas/core/groupby.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1780,12 +1780,14 @@ def size(self):
17801780
Compute group sizes
17811781
17821782
"""
1783-
base = Series(np.zeros(len(self.result_index), dtype=np.int64),
1784-
index=self.result_index)
1783+
index = self.result_index
1784+
base = Series(np.zeros(len(index), dtype=np.int64), index=index)
17851785
indices = self.indices
17861786
for k, v in compat.iteritems(indices):
17871787
indices[k] = len(v)
17881788
bin_counts = Series(indices, dtype=np.int64)
1789+
# make bin_counts.index to have same name to preserve it
1790+
bin_counts.index.name = index.name
17891791
result = base.add(bin_counts, fill_value=0)
17901792
# addition with fill_value changes dtype to float64
17911793
result = result.astype(np.int64)

pandas/tseries/tests/test_resample.py

+9-7
Original file line numberDiff line numberDiff line change
@@ -875,47 +875,47 @@ def test_resmaple_dst_anchor(self):
875875
# 5172
876876
dti = DatetimeIndex([datetime(2012, 11, 4, 23)], tz='US/Eastern')
877877
df = DataFrame([5], index=dti)
878-
assert_frame_equal(df.resample(rule='D', how='sum'),
878+
assert_frame_equal(df.resample(rule='D', how='sum'),
879879
DataFrame([5], index=df.index.normalize()))
880880
df.resample(rule='MS', how='sum')
881881
assert_frame_equal(df.resample(rule='MS', how='sum'),
882-
DataFrame([5], index=DatetimeIndex([datetime(2012, 11, 1)],
882+
DataFrame([5], index=DatetimeIndex([datetime(2012, 11, 1)],
883883
tz='US/Eastern')))
884884

885885
dti = date_range('2013-09-30', '2013-11-02', freq='30Min', tz='Europe/Paris')
886886
values = range(dti.size)
887887
df = DataFrame({"a": values, "b": values, "c": values}, index=dti, dtype='int64')
888888
how = {"a": "min", "b": "max", "c": "count"}
889-
889+
890890
assert_frame_equal(df.resample("W-MON", how=how)[["a", "b", "c"]],
891891
DataFrame({"a": [0, 48, 384, 720, 1056, 1394],
892892
"b": [47, 383, 719, 1055, 1393, 1586],
893893
"c": [48, 336, 336, 336, 338, 193]},
894-
index=date_range('9/30/2013', '11/4/2013',
894+
index=date_range('9/30/2013', '11/4/2013',
895895
freq='W-MON', tz='Europe/Paris')),
896896
'W-MON Frequency')
897897

898898
assert_frame_equal(df.resample("2W-MON", how=how)[["a", "b", "c"]],
899899
DataFrame({"a": [0, 48, 720, 1394],
900900
"b": [47, 719, 1393, 1586],
901901
"c": [48, 672, 674, 193]},
902-
index=date_range('9/30/2013', '11/11/2013',
902+
index=date_range('9/30/2013', '11/11/2013',
903903
freq='2W-MON', tz='Europe/Paris')),
904904
'2W-MON Frequency')
905905

906906
assert_frame_equal(df.resample("MS", how=how)[["a", "b", "c"]],
907907
DataFrame({"a": [0, 48, 1538],
908908
"b": [47, 1537, 1586],
909909
"c": [48, 1490, 49]},
910-
index=date_range('9/1/2013', '11/1/2013',
910+
index=date_range('9/1/2013', '11/1/2013',
911911
freq='MS', tz='Europe/Paris')),
912912
'MS Frequency')
913913

914914
assert_frame_equal(df.resample("2MS", how=how)[["a", "b", "c"]],
915915
DataFrame({"a": [0, 1538],
916916
"b": [1537, 1586],
917917
"c": [1538, 49]},
918-
index=date_range('9/1/2013', '11/1/2013',
918+
index=date_range('9/1/2013', '11/1/2013',
919919
freq='2MS', tz='Europe/Paris')),
920920
'2MS Frequency')
921921

@@ -1553,6 +1553,8 @@ def test_aggregate_with_nat(self):
15531553
expected.index = date_range(start='2013-01-01', freq='D', periods=5, name='key')
15541554
dt_result = getattr(dt_grouped, func)()
15551555
assert_series_equal(expected, dt_result)
1556+
# GH 9925
1557+
self.assertEqual(dt_result.index.name, 'key')
15561558

15571559
# if NaT is included, 'var', 'std', 'mean', 'first','last' and 'nth' doesn't work yet
15581560

0 commit comments

Comments
 (0)