FillSpec ======== .. cpp:class:: pandas::FillSpec pandas C++ class. Example ------- .. code-block:: cpp #include using namespace pandas; // Use FillSpec FillSpec obj; // ... operations ... Construction ------------ .. list-table:: :widths: 40 20 15 25 :header-rows: 1 * - Signature - Return Type - Location - Example * - ``static FillSpec from_legacy(double fv, const std::optional& str_fill)`` - static FillSpec - pd_dataframe.h:203 - Conversion ---------- .. list-table:: :widths: 40 20 15 25 :header-rows: 1 * - Signature - Return Type - Location - Example * - ``static FillSpec boolean(bool v)`` - static FillSpec - pd_dataframe.h:197 - :ref:`View ` Other Methods ------------- .. list-table:: :widths: 40 20 15 25 :header-rows: 1 * - Signature - Return Type - Location - Example * - ``static FillSpec floating(double v){ FillSpec r`` - static FillSpec - pd_dataframe.h:199 - :ref:`View ` * - ``static FillSpec integer(int64_t v){ FillSpec r`` - static FillSpec - pd_dataframe.h:198 - :ref:`View ` * - ``static FillSpec nan()`` - static FillSpec - pd_dataframe.h:196 - :ref:`View ` * - ``static FillSpec string(std::string v){ FillSpec r`` - static FillSpec - pd_dataframe.h:200 - :ref:`View ` Code Examples ------------- The following examples are extracted from the test suite. .. _example-fillspec-boolean-0: .. dropdown:: boolean (pd_test_2_all.cpp:20240) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 20230 :emphasize-lines: 11 void pd_test_getitem_dispatch_classify_bool() { std::cout << "pd_test_getitem_dispatch_classify_bool" << std::endl; pandas::DataFrame df; std::vector bvals = {true, false, true}; df.insert(0, "flag", std::make_unique>(bvals, "flag"), true); auto t = df.classify_column_access("flag"); check(t == pandas::DataFrame::ColumnAccessType::BoolColumn, "bool -> BoolColumn"); // boolean (nullable) dtype pandas::DataFrame df2; auto bs = std::make_unique>(bvals, "flag2"); bs->set_dtype_override("boolean"); df2.insert(0, "flag2", std::move(bs), true); auto t2 = df2.classify_column_access("flag2"); check(t2 == pandas::DataFrame::ColumnAccessType::BoolColumn, "boolean -> BoolColumn"); } void pd_test_getitem_dispatch_classify_string() { std::cout << "pd_test_getitem_dispatch_classify_string" << std::endl; .. _example-fillspec-floating-1: .. dropdown:: floating (pd_test_5_all.cpp:90472) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 90462 :emphasize-lines: 11 static void f_20_847316_df_reindex_with_spec_dup(int& local_fail) { std::cout << "-- f_20_847316_df_reindex_with_spec_dup\n"; expect_value_error_duplicate("c16_df_reindex_with_spec", [] { std::vector> cols; cols.emplace_back(std::vector{10, 20, 30}); cols.emplace_back(std::vector{40, 50, 60}); pandas::DataFrame df(cols, {"c1", "c2"}); df.set_index(std::make_unique>( std::vector{"a", "a", "b"})); pandas::FillSpec spec = pandas::FillSpec::floating(0.0); auto r = df.reindex_with_spec({"a", "b", "c"}, /*axis=*/0, spec); (void)r; }, local_fail); } static void f_20_847317_series_unique_succeeds(int& local_fail) { std::cout << "-- f_20_847317_series_unique_succeeds\n"; expect_no_exception("c17_series_unique", [&local_fail] { auto s = make_series({1, 2, 3}, {"a", "b", "c"}); auto r = s.reindex({"a", "b", "c", "d"}); .. _example-fillspec-integer-2: .. dropdown:: integer (pd_test_1_all.cpp:2897) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 2887 :emphasize-lines: 11 void pd_test_period_array_arithmetic() { std::cout << "========= PeriodArray: arithmetic ======================= "; pandas::PeriodArray arr(std::vector{ "2024-01", "2024-06", "NaT" }, "M"); // Add integer (shift forward) auto shifted = arr + 3; if (shifted.size() != 3) { std::cout << " [FAIL] : shifted size should be 3" << std::endl; throw std::runtime_error("pd_test_period_array_arithmetic failed: size"); } // Check ordinal shifted by 3 auto orig0 = arr[0]; auto shift0 = shifted[0]; if (!orig0.has_value() || !shift0.has_value() || .. _example-fillspec-nan-3: .. dropdown:: nan (pd_test_1_all.cpp:1556) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 1546 :emphasize-lines: 11 std::cout << " -> tests passed" << std::endl; } void pd_test_floating_array_nan_conversion() { std::cout << "========= FloatingArray: NaN to NA conversion ======================= "; // NaN values should be automatically converted to NA pandas::FloatingArray arr({ std::optional(1.0), std::optional(std::nan("")), // NaN std::optional(3.0) }); if (!arr.is_na(1)) { std::cout << " [FAIL] : in pd_test_floating_array_nan_conversion() : NaN should be converted to NA" << std::endl; throw std::runtime_error("pd_test_floating_array_nan_conversion failed: NaN should be NA"); } if (arr.is_na(0) || arr.is_na(2)) { std::cout << " [FAIL] : in pd_test_floating_array_nan_conversion() : non-NaN should not be NA" << std::endl; .. _example-fillspec-string-4: .. dropdown:: string (pd_test_1_all.cpp:941) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 931 :emphasize-lines: 11 #include "../pandas/pd_config.h" namespace dataframe_tests { namespace dataframe_tests_config { void pd_test_config_version() { std::cout << "========= df_config: version info ======================= "; const char* version = pandas::DataFrameInfo::version(); if (version == nullptr || std::string(version).empty()) { std::cout << "[FAIL] : in pd_test_config_version() : version is null or empty" << std::endl; throw std::runtime_error("pd_test_config_version failed: version is null or empty"); } std::cout << "-> tests passed" << std::endl; } void pd_test_config_na_repr() { std::cout << "========= df_config: NA representation ======================= "; const char* na_repr = pandas::DataFrameConfig::get_na_repr(); if (na_repr == nullptr) {