Skip to content

Commit 43d42ec

Browse files
committed
BUG: resampling with NaT in TimedeltaIndex (pandas-dev#13223)
1 parent 6141754 commit 43d42ec

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

pandas/tseries/resample.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1207,8 +1207,10 @@ def _get_time_delta_bins(self, ax):
12071207
data=[], freq=self.freq, name=ax.name)
12081208
return binner, [], labels
12091209

1210-
start = ax[0]
1211-
end = ax[-1]
1210+
# Addresses GH #13223
1211+
start = ax.min()
1212+
end = ax.max()
1213+
12121214
labels = binner = TimedeltaIndex(start=start,
12131215
end=end,
12141216
freq=self.freq,
@@ -1217,6 +1219,13 @@ def _get_time_delta_bins(self, ax):
12171219
end_stamps = labels + 1
12181220
bins = ax.searchsorted(end_stamps, side='left')
12191221

1222+
if ax.hasnans:
1223+
binner = binner.insert(0, tslib.NaT)
1224+
labels = labels.insert(0, tslib.NaT)
1225+
1226+
n_NaT = sum([ax_i is tslib.NaT for ax_i in ax])
1227+
bins = np.insert(bins, 0, n_NaT)
1228+
12201229
# Addresses GH #10530
12211230
if self.base > 0:
12221231
labels += type(self.freq)(self.base)

pandas/tseries/tests/test_resample.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,15 @@ def test_resample_timedelta_idempotency(self):
10071007
expected = series
10081008
assert_series_equal(result, expected)
10091009

1010+
def test_resample_timedelta_missing_values(self):
1011+
# GH 13223
1012+
index = pd.to_timedelta(['0s', pd.NaT, '2s'])
1013+
series = pd.Series([2, 3, 5], index=index)
1014+
result = series.resample('1s').mean()
1015+
expected = pd.Series([2, np.nan, 5], index=pd.timedelta_range(
1016+
start='0s', end='2s', freq='1s'))
1017+
assert_series_equal(result, expected)
1018+
10101019
def test_resample_rounding(self):
10111020
# GH 8371
10121021
# odd results when rounding is needed

0 commit comments

Comments
 (0)