{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "(indexing_pairs)=\n", "\n", "# Indexing/Filtering Pairs" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "import faninsar as fis" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatetimeIndex(['2020-01-01', '2020-01-13', '2020-01-25', '2020-02-06',\n", " '2020-02-18', '2020-03-01', '2020-03-13', '2020-03-25',\n", " '2020-04-06', '2020-04-18',\n", " ...\n", " '2024-09-12', '2024-09-24', '2024-10-06', '2024-10-18',\n", " '2024-10-30', '2024-11-11', '2024-11-23', '2024-12-05',\n", " '2024-12-17', '2024-12-29'],\n", " dtype='datetime64[ns]', length=153, freq='12D')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dates = pd.date_range(start=\"2020-01-01\",end=\"2024-12-31\",freq=\"12D\")\n", "dates" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
         Pairs           \n",
       "       primary  secondary\n",
       "0   2020-01-01 2020-01-13\n",
       "1   2020-01-01 2020-01-25\n",
       "2   2020-01-01 2020-02-06\n",
       "3   2020-01-13 2020-01-25\n",
       "4   2020-01-13 2020-02-06\n",
       "..         ...        ...\n",
       "448 2024-11-23 2024-12-17\n",
       "449 2024-11-23 2024-12-29\n",
       "450 2024-12-05 2024-12-17\n",
       "451 2024-12-05 2024-12-29\n",
       "452 2024-12-17 2024-12-29\n",
       "\n",
       "[453 rows x 2 columns]
" ], "text/plain": [ " Pairs \n", " primary secondary\n", "0 2020-01-01 2020-01-13\n", "1 2020-01-01 2020-01-25\n", "2 2020-01-01 2020-02-06\n", "3 2020-01-13 2020-01-25\n", "4 2020-01-13 2020-02-06\n", ".. ... ...\n", "448 2024-11-23 2024-12-17\n", "449 2024-11-23 2024-12-29\n", "450 2024-12-05 2024-12-17\n", "451 2024-12-05 2024-12-29\n", "452 2024-12-17 2024-12-29\n", "\n", "[453 rows x 2 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pairs_factory = fis.PairsFactory(dates)\n", "pairs = pairs_factory.from_interval(max_interval=3)\n", "pairs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Filter Pairs date range\n", "\n", "If you want to filter pairs using the start and end dates, you can directly slice the pairs just like you would slice a pandas datetime index.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
         Pairs           \n",
       "       primary  secondary\n",
       "0   2022-01-02 2022-01-14\n",
       "1   2022-01-02 2022-01-26\n",
       "2   2022-01-02 2022-02-07\n",
       "3   2022-01-14 2022-01-26\n",
       "4   2022-01-14 2022-02-07\n",
       "..         ...        ...\n",
       "190 2024-01-28 2024-02-21\n",
       "191 2024-01-28 2024-03-04\n",
       "192 2024-02-09 2024-02-21\n",
       "193 2024-02-09 2024-03-04\n",
       "194 2024-02-21 2024-03-04\n",
       "\n",
       "[195 rows x 2 columns]
" ], "text/plain": [ " Pairs \n", " primary secondary\n", "0 2022-01-02 2022-01-14\n", "1 2022-01-02 2022-01-26\n", "2 2022-01-02 2022-02-07\n", "3 2022-01-14 2022-01-26\n", "4 2022-01-14 2022-02-07\n", ".. ... ...\n", "190 2024-01-28 2024-02-21\n", "191 2024-01-28 2024-03-04\n", "192 2024-02-09 2024-02-21\n", "193 2024-02-09 2024-03-04\n", "194 2024-02-21 2024-03-04\n", "\n", "[195 rows x 2 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pairs[\"2022\":\"2024-03-15\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Filter Pairs by custom condition\n", "\n", "\n", "For example, if you want to keep only pairs that month of primary dates are in [8,9], you can achieve this by using the following code:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
        Pairs           \n",
       "      primary  secondary\n",
       "0  2020-08-04 2020-08-16\n",
       "1  2020-08-04 2020-08-28\n",
       "2  2020-08-04 2020-09-09\n",
       "3  2020-08-16 2020-08-28\n",
       "4  2020-08-16 2020-09-09\n",
       "..        ...        ...\n",
       "73 2024-09-12 2024-10-06\n",
       "74 2024-09-12 2024-10-18\n",
       "75 2024-09-24 2024-10-06\n",
       "76 2024-09-24 2024-10-18\n",
       "77 2024-09-24 2024-10-30\n",
       "\n",
       "[78 rows x 2 columns]
" ], "text/plain": [ " Pairs \n", " primary secondary\n", "0 2020-08-04 2020-08-16\n", "1 2020-08-04 2020-08-28\n", "2 2020-08-04 2020-09-09\n", "3 2020-08-16 2020-08-28\n", "4 2020-08-16 2020-09-09\n", ".. ... ...\n", "73 2024-09-12 2024-10-06\n", "74 2024-09-12 2024-10-18\n", "75 2024-09-24 2024-10-06\n", "76 2024-09-24 2024-10-18\n", "77 2024-09-24 2024-10-30\n", "\n", "[78 rows x 2 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mask = pairs.primary.month.map(lambda x: x in [8, 9])\n", "pairs[mask]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "geo", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.7" } }, "nbformat": 4, "nbformat_minor": 2 }