BrandonFors/pandas-github-issues huggingface dataset:
DOC: simplify theme footer config (fixes #60647)
State: closed

This PR removes custom footer settings in `conf.py` to use the new default footer provided by the updated `pydata-sphinx-theme`.

- Commented out: `footer_start`
Added: Contribution_plan.md file

Fixes #60647

Labels:
name: Closing Candidate
description: May be closeable, needs more eyeballs

Comments:
This appears similar to https://github.com/pandas-dev/pandas/pull/61685 which is unnecessary
Issue #28283, Finalize coverage for DataFrame.merge
State: closed

- [ ] closes #xxxx (Replace xxxx with the GitHub issue number)
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.


Issue #28283
# Evaluation and Solution Summary
## Issue Analysis:
The GitHub issue #28283 is about improving the coverage of NDFrame.__finalize__ in pandas. Specifically, many pandas methods (including DataFrame.merge) don't properly call __finalize__ to propagate metadata like attrs and flags from input DataFrames to the result.
## Problem:
When you perform a merge operation on DataFrames that have metadata (stored in .attrs), the resulting DataFrame loses this metadata because the merge methods don't call __finalize__.
Solution Components:

Core Fix: Modify the merge-related functions in pandas to call __finalize__ after creating the result DataFrame.
Key Files to Modify:

- pandas/core/frame.py - DataFrame.merge method
- pandas/core/reshape/merge.py - merge and merge_asof functions
- pandas/tests/generic/test_finalize.py - Add comprehensive tests

## Implementation Strategy:

Add result.__finalize__(left, method="merge") calls after merge operations
Use the left DataFrame as the primary source for metadata propagation
Ensure all merge variants (inner, outer, left, right, asof) are covered
Handle both DataFrame-DataFrame and DataFrame-Series merges


## Testing Strategy:

- Test all merge types (inner, outer, left, right)
- Test index-based merges
- Test merges with suffixes
- Test merge_asof functionality
- Test DataFrame-Series merges


## Benefits of the Fix:

Preserves important metadata during merge operations
Maintains consistency with other pandas operations that already call __finalize__
Enables better data lineage tracking
Supports custom metadata propagation workflows

## Implementation Notes:

The fix follows pandas' existing pattern of calling __finalize__ in similar operations
Metadata conflicts are resolved by preferring the left DataFrame's attributes
The solution is backward compatible and doesn't change the existing API
Performance impact is minimal since __finalize__ is only called once per operation

This solution addresses the specific DataFrame.merge part of the broader issue #28283 and provides a template for fixing other methods mentioned in the issue.



Labels:

Comments:
Closing as was opened by mistake.
DOC: move relevant whatsnew changes from 2.3.0 to 2.3.1 file
State: closed

Follow-up on https://github.com/pandas-dev/pandas/pull/61654, now moving some content from 2.3.0 to the 2.3.1 file for changes that only got backported for 2.3.1

Labels:
name: Docs

Comments:
Thanks @jorisvandenbossche 
Owee, I'm MrMeeseeks, Look at me.

There seem to be a conflict, please backport manually. Here are approximate instructions:

1. Checkout backport branch and update it.

```
git checkout 2.3.x
git pull
```

2. Cherry pick the first parent branch of the this PR on top of the older branch:
```
git cherry-pick -x -m1 dc1e367598a6b0b2c0ee700b3805f72aaccbda86
```

3. You will likely have some merge/cherry-pick conflict here, fix them and commit:

```
git commit -am 'Backport PR #61698: DOC: move relevant whatsnew changes from 2.3.0 to 2.3.1 file'
```

4. Push to a named branch:

```
git push YOURFORK 2.3.x:auto-backport-of-pr-61698-on-2.3.x
```

5. Create a PR against branch 2.3.x, I would have named this PR:

> "Backport PR #61698 on branch 2.3.x (DOC: move relevant whatsnew changes from 2.3.0 to 2.3.1 file)"

And apply the correct labels and milestones.

Congratulations — you did some good work! Hopefully your backport PR will be tested by the continuous integration and merged soon!

Remember to remove the `Still Needs Manual Backport` label once the PR gets merged.

If these instructions are inaccurate, feel free to [suggest an improvement](https://github.com/MeeseeksBox/MeeseeksDev).
                
Backport -> https://github.com/pandas-dev/pandas/pull/61751
TST: Increase test coverage for pandas.io.formats.excel.py
State: closed

Sorry for the appauling number of commits. Git was being unkind, and I accidentally pushed .venv/ to gitignore, which then when I tried to revert, would reinclude the venv on the commit, you get the picture. It won't happen again.


The purpose of this PR is to add some test coverage to the first class of pandas.io.formats.excel.py, in the CSSToExcelConverter class. This class is missing some coverage, and there were a few unused functions and lines of code that were also causing some code coverage problems, so they have been dealt with. 
<img width="1345" alt="Screenshot 2025-06-23 at 6 58 27 PM" src="https://github.com/user-attachments/assets/9610b4c6-ed5f-4323-9a9b-76de3ae0dcbd" />

<img width="1338" alt="Screenshot 2025-06-23 at 6 59 14 PM" src="https://github.com/user-attachments/assets/11a159de-3ca4-40a9-ade0-49347cf12157" />

<img width="1303" alt="Screenshot 2025-06-23 at 6 59 24 PM" src="https://github.com/user-attachments/assets/e3f967c1-9ef4-4927-b070-1c8af9ba00d1" />

These screenshots show the areas I am adding coverage too.

Labels:
name: Testing
description: pandas testing functions or related to the test suite
name: IO Excel
description: read_excel, to_excel

Comments:
Thanks @lsgordon
Raise MergeError on mismatched signed/unsigned int merge keys
State: open

This resolves issue - https://github.com/pandas-dev/pandas/issues/61688


Labels:
name: Bug
name: Reshaping
description: Concat, Merge/Join, Stack/Unstack, Explode
name: Stale

Comments:
pre-commit.ci autofix
This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this.
61636 
State: closed

This PR addresses [#61636](https://github.com/pandas-dev/pandas/issues/61636), which reports inconsistent dtype coercion during groupby aggregation on PyArrow-backed DataFrames. Specifically, aggregations like 'sum' or 'first' on columns with Arrow dtypes (e.g., int32, uint64) may return outputs with unexpected pandas-native dtypes like float64.


Labels:

Comments:
Thanks @Ranjana-babu. You should submit to this repo the final changes to fix the bug. Not sure who this contribution plan is addess to, but not us. I'll close this PR, feel free to open a new one when you fixed the bug.
fix for building docs on Windows
State: closed

- [x] closes #60149

I was having two issues with building the docs on Windows.

1. Building a single page with `--single` was very slow because it was reading in lots of files.  So there is a fix in `conf.py` that changes any backslashes to `/` in the paths.  Probably a better fix is to not be using `os.join` and use `pathlib`, but that's a larger change.
2. For #60149, there are 2 issues with building `enhancingperf.rst`:
  - As mentioned in https://github.com/pandas-dev/pandas/issues/60149#issuecomment-2600578029 , having double quotes in the ipython strings messes up Windows, so changing them to single quotes makes it work
  - The cython functions expect `int64` dtypes, but the defaults coming from `numpy` when building the DF are `int32`, so the `astype(int)` calls fix that



Labels:
name: Docs
name: Windows
description: Windows OS

Comments:
Thanks @Dr-Irv
docs: Add CONTRIBUTION_PLAN.md for GitHub use case
State: closed

This Pull Request adds a detailed CONTRIBUTION_PLAN.md that documents the process of evaluating and contributing to the pandas-dev/pandas project. The plan includes environment setup, issue identification, and a step-by-step guide to raising a PR.

This is part of a simulated GitHub use case to demonstrate contribution readiness.

Labels:

Comments:
This is already covered in our documentation, https://pandas.pydata.org/docs/development/index.html. Closing
BUG: Fix lost precision with common type of uint64/int64
State: open

- [x] closes #61676  (Replace xxxx with the GitHub issue number)
- [x] closes #61688  (Replace xxxx with the GitHub issue number)
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [x] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.


Labels:
name: Bug
name: Dtype Conversions
description: Unexpected or buggy dtype conversions
name: isin
description: isin method

Comments:
pre-commit.ci autofix
I think this patch is more safe and provides better performance
I test another fix that can be benefit for other issues (e.g #61688) without any changes
But it breaks some tests (the fix changes the behavior of np_find_common_type)
pre-commit.ci autofix
Hi,

Numpy documentation is not explicit about it but the API give the best compromise for this kind of types as it's a hardware limitation.
IIRC the precision start to lose if the uint64 number is above 2^53.
The API should not be deprecated in my opinion but rather be aware of this limitation.
I don't see any other solution than using an object.
> I don't see any other solution than using an object.

there is another PR open to address the issue #61694. The approach there is to raise a ValueError instead.
ENH #61033: Add coalesce_keys option to DataFrame.join for preserving join keys
State: closed

Add coalesce_keys option to DataFrame.join for preserving join keys

This adds a coalesce_keys keyword to DataFrame.join to allow preservation
of both join key columns (id and id_right), instead of automatically
coalescing them into a single column.

This is especially useful in full outer joins, where retaining information
about unmatched keys from both sides is important.

Example:
    df1.join(df2, on=id, coalesce_keys=False)

This will result in both id and id_right columns being preserved, rather
than merged into a single id.

Includes:
- Modifications to join internals (core/reshape/merge.py)
- A dedicated test file (test_merge_coalesce.py) covering:
    - Preservation of join keys when coalesce_keys=False
    - Comparison with default behavior (coalesce_keys=True)
    - Full outer joins with asymmetric key presence


Labels:
name: Enhancement
name: Reshaping
description: Concat, Merge/Join, Stack/Unstack, Explode
name: Stale

Comments:
closes #61033
This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this.
Thanks for the pull request, but it appears to have gone stale. If interested in continuing, please merge in the main branch, address any review comments and/or failing tests, and we can reopen.
BUG: fix: `list` as index item does not raise
State: closed

- [X] closes #60925
- [X] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [X] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [X] Added an entry in the latest `doc/source/whatsnew/v3.0.0.rst` file if fixing a bug or adding a new feature.

### Problem:
Index constructor was allowing creation of indexes where one of the index's item is a list (unhashable) while others are not lists.

- If all items are lists - like columns=[ ['a', 'b'], ['b', 'c'], ['b', 'c'] ], it will try to create a MultiIndex. **Correct**.
- If _any_ item is a list, but _NOT all_ - like the initial example, columns=[ 'a', ['b', 'c'], ['b', 'c'] ], there's no check for this condition, and the creation will follow as if all items, including the lists, are valid column names.

### Solution:
Added a check in the Index constructor for this case. Raise ValueError.
Added test to check if is raising correctly.
Changed a test that should raise.

Labels:
name: Bug
name: Index
description: Related to the Index class or subclasses
name: Stale

Comments:
This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this.
Thanks for the pull request, but it appears to have gone stale. If interested in continuing, please merge in the main branch, address any review comments and/or failing tests, and we can reopen.
DOC: Document two-issue limit for `take` command in contributing guide #61626
State: closed

- [ ] closes #61626 
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.


Labels:

Comments:
Hi team! 👋

Just wanted to kindly follow up — it's been a few days, and I wanted to check if there's anything I should improve or update in this PR.

Would really love your feedback and guidance. Thanks for the incredible work you all do maintaining pandas! 🙏

cc: @mroeschke @rhshadrach @noatamir
Thanks for the PR, but there is no such consideration when assigning due to a `take` comment. See the linked issue for more details.

When looking for an issue to work on, I recommend first verifying the issue reported is correct. It is quite often that this reporter is mistaken for one reason or another.
@rhshadrach Thank you so much for the feedback! Definitely will work on it!
CLN: Use dedup_names for column name mangling in Python parser (#50371)
State: open

### What does this PR do?

Replaces manual deduplication logic in the Python parser with the `dedup_names` utility from `pandas.io.common`.

### Why is this important?

- Improves consistency and maintainability
- Simplifies internal logic
- Addresses issue #50371

---

### Checklist
- [x] closes #50371
- [x] Tests added and passed (existing tests cover the change)
- [x] All code checks passed (CI will run static checks)
- [ ] Added type annotations (n/a)
- [ ] Added whatsnew entry (not needed for refactor)




Labels:
name: Clean

Comments:
Hi maintainers 👋

This PR replaces manual deduplication logic with the shared `dedup_names` utility. Parser-related tests pass as expected ✅

Some CI checks failed due to network-based tests (`test_network.py`, `test_url`, etc.), which appear unrelated to my change and are known to be flaky or environment-dependent.

Please let me know if you’d like anything else adjusted. Thanks!


can you merge main and see if the CI passes
Yeah sir, I will try to merge and see if the CI passes

On Tue, 15 Jul, 2025, 1:34 am jbrockmendel, ***@***.***>
wrote:

> ***@***.**** commented on this pull request.
> ------------------------------
>
> In pandas/io/parsers/python_parser.py
> <https://github.com/pandas-dev/pandas/pull/61670#discussion_r2205712915>:
>
> > -                    # TODO: Use pandas.io.common.dedup_names instead (see #50371)
> -                    for i in col_loop_order:
> -                        col = this_columns[i]
> -                        old_col = col
> -                        cur_count = counts[col]
> -
> -                        if cur_count > 0:
> -                            while cur_count > 0:
> -                                counts[old_col] = cur_count + 1
> -                                col = f"{old_col}.{cur_count}"
> -                                if col in this_columns:
> -                                    cur_count += 1
> -                                else:
> -                                    cur_count = counts[col]
> -
> -                            if (
>
> looks like this chunk isn't present in dedup_names?
>
> —
> Reply to this email directly, view it on GitHub
> <https://github.com/pandas-dev/pandas/pull/61670#pullrequestreview-3017613477>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/BCH5XYIIYOXP5ISXTVC73533IQEOLAVCNFSM6AAAAAB7NLXPE2VHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZTAMJXGYYTGNBXG4>
> .
> You are receiving this because you authored the thread.Message ID:
> ***@***.***>
>
ENH: Support for Orthodox Easter
State: closed

- [X] closes #61665
- [X] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [X] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [X] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [X] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.


Labels:
name: Frequency
description: DateOffsets

Comments:
Thanks @w3stling
DOC: Make the benchmarks URL clickable
State: closed

Make the benchmarks URL clickable.

- [ ] closes #xxxx (Replace xxxx with the GitHub issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.


Labels:
name: Docs

Comments:
Thanks @star1327p
DOC/ENH: Holiday days_of_week value error
State: closed

Changed `Holiday` constructor argument `days_of_week` to raise a `ValueError` on input of the incorrect type as discussed in #61600
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [x] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.


Labels:
name: Frequency
description: DateOffsets

Comments:
I also edited the docstring a little bit as I was a bit confused what days_of_week was supposed to do from the docstring alone. 

Happy to delete the docstring edits if they don't make sense though.
Thanks @sharkipelago
WEB: Reorganization of the Ecosystem page
State: closed

I changed the sections of the Ecosystem page, in a way that the pandas extensions are grouped together first, and the other sections emphasize how packages they are related to pandas. I merged two separate IO sections, and the IDEs with the development tools.

I added line breaks to very long lines, and improved a bit the styles.

Probably better to check the preview when ready, than the diff, as the diff will be long and difficult to follow as mostly every library is moved.


Labels:
name: Web
description: pandas website

Comments:
/preview
Website preview of this PR available at: https://pandas.pydata.org/preview/pandas-dev/pandas/61657/community/ecosystem.html
Thanks @datapythonista
WEB: Add table of contents to the Ecosystem
State: closed

Supersedes #61595

Changes to make the tables of contents in the website the same in all pages (we had customized the PDEP ones before).

Adding the ToC to Ecosystem. It renders like this:

![Screenshot at 2025-06-13 19-02-56](https://github.com/user-attachments/assets/a3471680-b9f9-46e6-b02d-0d379d75efec)


I can make it just one level if preferred. I think with one level looks nicer, but with two, it's uglier but more practical (and simpler since it's the same for all pages). But no strong preference from my side


Labels:
name: Web
description: pandas website

Comments:
Thanks @datapythonista
DOC: Add release notes template for 2.3.1
State: closed

Starting the release notes for 2.3.1, so we can start adding things (for new PRs, but will also follow-up with moving some things from 2.3.0 to 2.3.1)

Labels:
name: Docs

Comments:
@rhshadrach I remember you were adding those in a PR with a bug fix. I think we should better merge this, but since your PR will conflict, I'll leave it to you.
Thanks @jorisvandenbossche
[backport 2.3.x] TST: update xfail xarray version check in to_xarray test (#61648)
State: closed

Backport of #61648 

Probably not needed to backport because we might not get the latest xarray versions in the envs of the 2.3.x branch, but still useful in case someone runs the tests with more up to date xarray

Labels:

Comments:
Not sure why we get the failures in the CI, I don't think they happen in `main`. And I don't remember any recent PR fixing those.
> Not sure why we get the failures in the CI, I don't think they happen in `main`.

Currently it is the python-dev windows one that is failing. It has been failing consistently the last few days while I have been doing backports. 
Quickly checking, this was not yet failing last week when the 2.3.0 release was done. Comparing that build with the first failing one of this week, there are various things that updated. It's a newer version of the image, python updated from 3.13.3 to 3.13.4, cython updated from 3.1.1 to 3.1.2.

What seems fishy is that the error message is saying "LINK : fatal error LNK1104: cannot open file 'python313t.lib'", but this is not for a free-threaded build.

Now, it seems that Python 3.13.4 has several unintended regressions, which are fixed in 3.13.5 (https://www.python.org/downloads/release/python-3135/, one related to building on windows), so it is probably just a matter of waiting until we get 3.13.5 through the setup action.
And the reason it is not failing on main is because there 3.13 is tested through a conda env (https://github.com/pandas-dev/pandas/pull/61333), and conda-forge directly updated from 3.13.3 to 3.13.5, avoiding the issue