Skip to content

BUG: fix is_subperiod/is_superperiod identity for M/Q/Y frequencies#64804

Draft
jbrockmendel wants to merge 10 commits intopandas-dev:mainfrom
jbrockmendel:bug-18553
Draft

BUG: fix is_subperiod/is_superperiod identity for M/Q/Y frequencies#64804
jbrockmendel wants to merge 10 commits intopandas-dev:mainfrom
jbrockmendel:bug-18553

Conversation

@jbrockmendel
Copy link
Member

Summary

  • is_subperiod(x, x) and is_superperiod(x, x) incorrectly returned False for monthly, quarterly, and annual frequencies while returning True for daily and sub-daily frequencies
  • This caused same-frequency resampling with M/Q/Y to bypass aggregation (via asfreq()), returning raw values instead of aggregation results (e.g. .count() returning original values instead of counts)
  • Fixes the identity case for annual (with rule month matching), quarterly (with month conformance), and monthly frequencies in both functions

closes #18553

Test plan

  • test_is_subperiod_identity — verifies identity returns True for all base frequencies
  • test_is_subperiod_anchored_identity — verifies anchored annual/quarterly variants
  • test_resample_same_freq_aggregation — verifies .count(), .sum(), .mean() produce correct aggregation results for M/Q/Y
  • Full resample and plotting test suites pass

🤖 Generated with Claude Code

jbrockmendel and others added 10 commits March 17, 2026 17:56
The fast_float subproject (added in GH#64432) requires C++11+ features such as brace initialization. Some compilers (e.g. Apple clang 15) default to C++98, causing build failures. Explicitly set cpp_std=c++17 to match the c_std=c11 already specified for C. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
C17 is a bugfix release over C11 with no breaking changes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…andas-dev#18553) is_subperiod(x, x) and is_superperiod(x, x) incorrectly returned False for monthly, quarterly, and annual frequencies while returning True for daily and sub-daily. This caused same-frequency resampling with M/Q/Y to bypass aggregation via asfreq(), returning raw values instead of aggregation results (e.g. .count() returning original values). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1 participant