Skip to content

Commit 7188f20

Browse files
committed
Merge branch 'master' into faster_masked_transpose
2 parents 7daa4cc + 80b3fee commit 7188f20

File tree

97 files changed

+2075
-1162
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+2075
-1162
lines changed

.github/workflows/cache-cleanup.yml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Clean closed branch caches
2+
on:
3+
pull_request:
4+
types:
5+
- closed
6+
7+
jobs:
8+
cleanup:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Clean Cache
12+
run: |
13+
gh extension install actions/gh-actions-cache
14+
15+
REPO=${{ github.repository }}
16+
BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"
17+
18+
echo "Fetching list of cache key"
19+
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 )
20+
21+
## Setting this to not fail the workflow while deleting cache keys.
22+
set +e
23+
echo "Deleting caches..."
24+
for cacheKey in $cacheKeysForPR
25+
do
26+
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
27+
done
28+
echo "Done"
29+
env:
30+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

asv_bench/benchmarks/indexing.py

+22
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
lower-level methods directly on Index and subclasses, see index_object.py,
44
indexing_engine.py, and index_cached.py
55
"""
6+
from datetime import datetime
67
import warnings
78

89
import numpy as np
@@ -531,4 +532,25 @@ def time_chained_indexing(self, mode):
531532
df2["C"] = 1.0
532533

533534

535+
class Block:
536+
params = [
537+
(True, "True"),
538+
(np.array(True), "np.array(True)"),
539+
]
540+
541+
def setup(self, true_value, mode):
542+
self.df = DataFrame(
543+
False,
544+
columns=np.arange(500).astype(str),
545+
index=date_range("2010-01-01", "2011-01-01"),
546+
)
547+
548+
self.true_value = true_value
549+
550+
def time_test(self, true_value, mode):
551+
start = datetime(2010, 5, 1)
552+
end = datetime(2010, 9, 1)
553+
self.df.loc[start:end, :] = true_value
554+
555+
534556
from .pandas_vb_common import setup # noqa: F401 isort:skip

ci/code_checks.sh

-39
Original file line numberDiff line numberDiff line change
@@ -80,31 +80,9 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
8080

8181
MSG='Partially validate docstrings (EX01)' ; echo $MSG
8282
$BASE_DIR/scripts/validate_docstrings.py --format=actions --errors=EX01 --ignore_functions \
83-
pandas.Series.item \
84-
pandas.Series.pipe \
85-
pandas.Series.mode \
86-
pandas.Series.is_unique \
87-
pandas.Series.is_monotonic_increasing \
88-
pandas.Series.is_monotonic_decreasing \
8983
pandas.Series.backfill \
90-
pandas.Series.bfill \
9184
pandas.Series.ffill \
9285
pandas.Series.pad \
93-
pandas.Series.argsort \
94-
pandas.Series.reorder_levels \
95-
pandas.Series.ravel \
96-
pandas.Series.first_valid_index \
97-
pandas.Series.last_valid_index \
98-
pandas.Series.dt.date \
99-
pandas.Series.dt.time \
100-
pandas.Series.dt.timetz \
101-
pandas.Series.dt.dayofyear \
102-
pandas.Series.dt.day_of_year \
103-
pandas.Series.dt.quarter \
104-
pandas.Series.dt.daysinmonth \
105-
pandas.Series.dt.days_in_month \
106-
pandas.Series.dt.tz \
107-
pandas.Series.dt.end_time \
10886
pandas.Series.dt.days \
10987
pandas.Series.dt.seconds \
11088
pandas.Series.dt.microseconds \
@@ -191,12 +169,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
191169
pandas.Timedelta.to_numpy \
192170
pandas.Timedelta.total_seconds \
193171
pandas.arrays.TimedeltaArray \
194-
pandas.Period.end_time \
195-
pandas.Period.freqstr \
196-
pandas.Period.is_leap_year \
197-
pandas.Period.month \
198-
pandas.Period.quarter \
199-
pandas.Period.year \
200172
pandas.Period.asfreq \
201173
pandas.Period.now \
202174
pandas.arrays.PeriodArray \
@@ -319,9 +291,7 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
319291
pandas.Index.fillna \
320292
pandas.Index.dropna \
321293
pandas.Index.astype \
322-
pandas.Index.item \
323294
pandas.Index.map \
324-
pandas.Index.ravel \
325295
pandas.Index.to_list \
326296
pandas.Index.append \
327297
pandas.Index.join \
@@ -431,7 +401,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
431401
pandas.core.groupby.SeriesGroupBy.get_group \
432402
pandas.core.groupby.DataFrameGroupBy.all \
433403
pandas.core.groupby.DataFrameGroupBy.any \
434-
pandas.core.groupby.DataFrameGroupBy.bfill \
435404
pandas.core.groupby.DataFrameGroupBy.count \
436405
pandas.core.groupby.DataFrameGroupBy.cummax \
437406
pandas.core.groupby.DataFrameGroupBy.cummin \
@@ -454,16 +423,13 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
454423
pandas.core.groupby.DataFrameGroupBy.var \
455424
pandas.core.groupby.SeriesGroupBy.all \
456425
pandas.core.groupby.SeriesGroupBy.any \
457-
pandas.core.groupby.SeriesGroupBy.bfill \
458426
pandas.core.groupby.SeriesGroupBy.count \
459427
pandas.core.groupby.SeriesGroupBy.cummax \
460428
pandas.core.groupby.SeriesGroupBy.cummin \
461429
pandas.core.groupby.SeriesGroupBy.cumprod \
462430
pandas.core.groupby.SeriesGroupBy.cumsum \
463431
pandas.core.groupby.SeriesGroupBy.diff \
464432
pandas.core.groupby.SeriesGroupBy.ffill \
465-
pandas.core.groupby.SeriesGroupBy.is_monotonic_increasing \
466-
pandas.core.groupby.SeriesGroupBy.is_monotonic_decreasing \
467433
pandas.core.groupby.SeriesGroupBy.max \
468434
pandas.core.groupby.SeriesGroupBy.median \
469435
pandas.core.groupby.SeriesGroupBy.min \
@@ -526,15 +492,10 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then
526492
pandas.api.extensions.ExtensionArray.shape \
527493
pandas.api.extensions.ExtensionArray.tolist \
528494
pandas.DataFrame.columns \
529-
pandas.DataFrame.iterrows \
530-
pandas.DataFrame.pipe \
531495
pandas.DataFrame.backfill \
532-
pandas.DataFrame.bfill \
533496
pandas.DataFrame.ffill \
534497
pandas.DataFrame.pad \
535498
pandas.DataFrame.swapaxes \
536-
pandas.DataFrame.first_valid_index \
537-
pandas.DataFrame.last_valid_index \
538499
pandas.DataFrame.attrs \
539500
pandas.DataFrame.plot \
540501
pandas.DataFrame.to_gbq \

ci/deps/actions-310.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencies:
3939
- numexpr>=2.8.0
4040
- odfpy>=1.4.1
4141
- qtpy>=2.2.0
42-
- openpyxl<3.1.1, >=3.0.10
42+
- openpyxl>=3.0.10
4343
- pandas-gbq>=0.17.5
4444
- psycopg2>=2.9.3
4545
- pyarrow>=7.0.0

ci/deps/actions-311.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencies:
3939
- numexpr>=2.8.0
4040
- odfpy>=1.4.1
4141
- qtpy>=2.2.0
42-
- openpyxl<3.1.1, >=3.0.10
42+
- openpyxl>=3.0.10
4343
- pandas-gbq>=0.17.5
4444
- psycopg2>=2.9.3
4545
- pyarrow>=7.0.0

ci/deps/actions-39-downstream_compat.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ dependencies:
4040
- numexpr>=2.8.0
4141
- odfpy>=1.4.1
4242
- qtpy>=2.2.0
43-
- openpyxl<3.1.1, >=3.0.10
43+
- openpyxl>=3.0.10
4444
- pandas-gbq>=0.17.5
4545
- psycopg2>=2.9.3
4646
- pyarrow>=7.0.0

ci/deps/actions-39.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencies:
3939
- numexpr>=2.8.0
4040
- odfpy>=1.4.1
4141
- qtpy>=2.2.0
42-
- openpyxl<3.1.1, >=3.0.10
42+
- openpyxl>=3.0.10
4343
- pandas-gbq>=0.17.5
4444
- psycopg2>=2.9.3
4545
- pyarrow>=7.0.0

ci/deps/circle-39-arm64.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ dependencies:
3939
- numexpr>=2.8.0
4040
- odfpy>=1.4.1
4141
- qtpy>=2.2.0
42-
- openpyxl<3.1.1, >=3.0.10
42+
- openpyxl>=3.0.10
4343
- pandas-gbq>=0.17.5
4444
- psycopg2>=2.9.3
4545
- pyarrow>=7.0.0

df_with_col.xlsx

5.63 KB
Binary file not shown.

df_without_col.xlsx

5.37 KB
Binary file not shown.

doc/source/development/contributing_environment.rst

+9
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,15 @@ To compile pandas with setuptools, run::
249249

250250
python setup.py develop
251251

252+
.. note::
253+
If pandas is already installed (via meson), you have to uninstall it first::
254+
255+
python -m pip uninstall pandas
256+
257+
This is because python setup.py develop will not uninstall the loader script that ``meson-python``
258+
uses to import the extension from the build folder, which may cause errors such as an
259+
``FileNotFoundError`` to be raised.
260+
252261
.. note::
253262
You will need to repeat this step each time the C extensions change, for example
254263
if you modified any file in ``pandas/_libs`` or if you did a fetch and merge from ``upstream/main``.

doc/source/getting_started/index.rst

+10-10
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Intro to pandas
6969
<div id="accordion" class="shadow tutorial-accordion">
7070

7171
<div class="card tutorial-card">
72-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseOne">
72+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseOne">
7373
<div class="d-flex flex-row tutorial-card-header-1">
7474
<div class="d-flex flex-row tutorial-card-header-2">
7575
<button class="btn btn-dark btn-sm"></button>
@@ -116,7 +116,7 @@ to explore, clean, and process your data. In pandas, a data table is called a :c
116116
</div>
117117

118118
<div class="card tutorial-card">
119-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseTwo">
119+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseTwo">
120120
<div class="d-flex flex-row tutorial-card-header-1">
121121
<div class="d-flex flex-row tutorial-card-header-2">
122122
<button class="btn btn-dark btn-sm"></button>
@@ -163,7 +163,7 @@ data sources is provided by function with the prefix ``read_*``. Similarly, the
163163
</div>
164164

165165
<div class="card tutorial-card">
166-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseThree">
166+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseThree">
167167
<div class="d-flex flex-row tutorial-card-header-1">
168168
<div class="d-flex flex-row tutorial-card-header-2">
169169
<button class="btn btn-dark btn-sm"></button>
@@ -210,7 +210,7 @@ data you need are available in pandas.
210210
</div>
211211

212212
<div class="card tutorial-card">
213-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseFour">
213+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseFour">
214214
<div class="d-flex flex-row tutorial-card-header-1">
215215
<div class="d-flex flex-row tutorial-card-header-2">
216216
<button class="btn btn-dark btn-sm"></button>
@@ -257,7 +257,7 @@ corresponding to your data.
257257
</div>
258258

259259
<div class="card tutorial-card">
260-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseFive">
260+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseFive">
261261
<div class="d-flex flex-row tutorial-card-header-1">
262262
<div class="d-flex flex-row tutorial-card-header-2">
263263
<button class="btn btn-dark btn-sm"></button>
@@ -304,7 +304,7 @@ Adding a column to a :class:`DataFrame` based on existing data in other columns
304304
</div>
305305

306306
<div class="card tutorial-card">
307-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseSix">
307+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseSix">
308308
<div class="d-flex flex-row tutorial-card-header-1">
309309
<div class="d-flex flex-row tutorial-card-header-2">
310310
<button class="btn btn-dark btn-sm"></button>
@@ -351,7 +351,7 @@ data set, a sliding window of the data, or grouped by categories. The latter is
351351
</div>
352352

353353
<div class="card tutorial-card">
354-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseSeven">
354+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseSeven">
355355
<div class="d-flex flex-row tutorial-card-header-1">
356356
<div class="d-flex flex-row tutorial-card-header-2">
357357
<button class="btn btn-dark btn-sm"></button>
@@ -398,7 +398,7 @@ from long to wide format. With aggregations built-in, a pivot table is created w
398398
</div>
399399

400400
<div class="card tutorial-card">
401-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseEight">
401+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseEight">
402402
<div class="d-flex flex-row tutorial-card-header-1">
403403
<div class="d-flex flex-row tutorial-card-header-2">
404404
<button class="btn btn-dark btn-sm"></button>
@@ -444,7 +444,7 @@ Multiple tables can be concatenated both column wise and row wise as database-li
444444
</div>
445445

446446
<div class="card tutorial-card">
447-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseNine">
447+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseNine">
448448
<div class="d-flex flex-row tutorial-card-header-1">
449449
<div class="d-flex flex-row tutorial-card-header-2">
450450
<button class="btn btn-dark btn-sm"></button>
@@ -487,7 +487,7 @@ pandas has great support for time series and has an extensive set of tools for w
487487
</div>
488488

489489
<div class="card tutorial-card">
490-
<div class="card-header collapsed card-link" data-toggle="collapse" data-target="#collapseTen">
490+
<div class="card-header collapsed card-link" data-bs-toggle="collapse" data-bs-target="#collapseTen">
491491
<div class="d-flex flex-row tutorial-card-header-1">
492492
<div class="d-flex flex-row tutorial-card-header-2">
493493
<button class="btn btn-dark btn-sm"></button>

doc/source/getting_started/intro_tutorials/07_reshape_table_layout.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828

2929
</li>
3030
<li class="list-group-item gs-data-list">
31-
<div data-toggle="collapse" href="#collapsedata2" role="button" aria-expanded="false" aria-controls="collapsedata2">
32-
<span class="badge badge-dark">Air quality data</span>
31+
<div data-bs-toggle="collapse" href="#collapsedata2" role="button" aria-expanded="false" aria-controls="collapsedata2">
32+
<span class="badge bg-secondary">Air quality data</span>
3333
</div>
3434
<div class="collapse" id="collapsedata2">
3535
<div class="card-body">

doc/source/getting_started/intro_tutorials/08_combine_dataframes.rst

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
</div>
1717
<ul class="list-group list-group-flush">
1818
<li class="list-group-item gs-data-list">
19-
<div data-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
20-
<span class="badge badge-dark">Air quality Nitrate data</span>
19+
<div data-bs-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
20+
<span class="badge bg-secondary">Air quality Nitrate data</span>
2121
</div>
2222
<div class="collapse" id="collapsedata">
2323
<div class="card-body">
@@ -50,8 +50,8 @@ Westminster* in respectively Paris, Antwerp and London.
5050

5151
</li>
5252
<li class="list-group-item gs-data-list">
53-
<div data-toggle="collapse" href="#collapsedata2" role="button" aria-expanded="false" aria-controls="collapsedata2">
54-
<span class="badge badge-dark">Air quality Particulate matter data</span>
53+
<div data-bs-toggle="collapse" href="#collapsedata2" role="button" aria-expanded="false" aria-controls="collapsedata2">
54+
<span class="badge bg-secondary">Air quality Particulate matter data</span>
5555
</div>
5656
<div class="collapse" id="collapsedata2">
5757
<div class="card-body">

doc/source/getting_started/intro_tutorials/09_timeseries.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
</div>
1818
<ul class="list-group list-group-flush">
1919
<li class="list-group-item gs-data-list">
20-
<div data-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
21-
<span class="badge badge-dark">Air quality data</span>
20+
<div data-bs-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
21+
<span class="badge bg-secondary">Air quality data</span>
2222
</div>
2323
<div class="collapse" id="collapsedata">
2424
<div class="card-body">

doc/source/getting_started/intro_tutorials/includes/air_quality_no2.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.. raw:: html
22

3-
<div data-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
4-
<span class="badge badge-dark">Air quality data</span>
3+
<div data-bs-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
4+
<span class="badge bg-secondary">Air quality data</span>
55
</div>
66
<div class="collapse" id="collapsedata">
77
<div class="card-body">

doc/source/getting_started/intro_tutorials/includes/titanic.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.. raw:: html
22

3-
<div data-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
4-
<span class="badge badge-dark">Titanic data</span>
3+
<div data-bs-toggle="collapse" href="#collapsedata" role="button" aria-expanded="false" aria-controls="collapsedata">
4+
<span class="badge bg-secondary">Titanic data</span>
55
</div>
66
<div class="collapse" id="collapsedata">
77
<div class="card-body">

0 commit comments

Comments
 (0)