BUG: Fix record_prefix ignored when record_path is empty (GH 62205) #62215
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes the bug reported in #62205 where
record_prefix
was completely ignored whenrecord_path
was empty.The Problem
When calling
pd.json_normalize(data, record_prefix="T")
with emptyrecord_path
, therecord_prefix
was ignored due to a performance optimization that bypassed the prefix logic.Before (broken):
Expected behavior:
# Result: columns should be ["T.k", "T.m"] (prefix correctly applied)
The Solution
Modified the early return optimization logic to exclude cases where
record_prefix
is provided. Whenrecord_prefix
is provided, the function now properly applies the prefix using the existingnested_to_record
function with correct separator handling.Code Changes
File:
pandas/io/json/_normalize.py
The fix ensures that when
record_prefix
is provided, the function skips the early return optimization and properly applies the prefix, even whenrecord_path
is None.Testing
Added test case
test_record_prefix_without_record_path
that verifies the bug is fixed. All existing tests continue to pass.Verification
Checklist
Related Issues
Closes #62205