SparseDtype#

class pandas::SparseDtype#

Data type class for pandas extension types.

Example#

#include <pandas/pandas.h>
using namespace pandas;

// Use SparseDtype
SparseDtype obj;
// ... operations ...

Arithmetic#

Signature

Return Type

Location

Example

std::string subtype_name() const

std::string

pd_sparse_dtype.h:156

Iteration#

Signature

Return Type

Location

Example

size_t itemsize() const override

size_t

pd_sparse_dtype.h:132

Type Checking#

Signature

Return Type

Location

Example

bool is_default_fill_value() const

bool

pd_sparse_dtype.h:196

Other Methods#

Signature

Return Type

Location

Example

static T default_fill_value()

static T

pd_sparse_dtype.h:80

T fill_value() const

T

pd_sparse_dtype.h:148

View

SparseDtype() : fill_value_(default_fill_value())

SparseDtype() :

pd_sparse_dtype.h:66

explicit SparseDtype(T fill_value) : fill_value_(fill_value)

explicit SparseDtype(T fill_value) :

pd_sparse_dtype.h:72

std::string kind() const override

std::string

pd_sparse_dtype.h:140

View

std::string name() const override

std::string

pd_sparse_dtype.h:101

View

numpy::DType numpy_dtype() const override

numpy::DType

pd_sparse_dtype.h:125

std::string repr() const override

std::string

pd_sparse_dtype.h:189

View

void set_fill_value_display(const std::string& display)

void

pd_sparse_dtype.h:95

void set_subtype_name(const std::string& name)

void

pd_sparse_dtype.h:93

const std::type_info& type() const override

const std::type_info&

pd_sparse_dtype.h:163

View

Code Examples#

The following examples are extracted from the test suite.

fill_value (pd_test_1_all.cpp:3229)
3219        std::cout << " -> tests passed" << std::endl;
3220    }
3221
3222    void pd_test_sparse_array_fill_value_property() {
3223        std::cout << "========= SparseArray: fill_value property ======================= ";
3224
3225        std::vector<numpy::int64> data = {-1, 5, -1, 10, -1};
3226        pandas::SparseArray<numpy::int64> arr(data, static_cast<numpy::int64>(-1));
3227
3228        if (arr.fill_value() != -1) {
3229            std::cout << "  [FAIL] : in pd_test_sparse_array_fill_value_property() : fill_value != -1" << std::endl;
3230            throw std::runtime_error("pd_test_sparse_array_fill_value_property failed: fill_value != -1");
3231        }
3232
3233        // Test default fill_value for float (NaN)
3234        pandas::SparseArray<numpy::float64> arr_float;
3235        if (!std::isnan(arr_float.fill_value())) {
3236            std::cout << "  [FAIL] : in pd_test_sparse_array_fill_value_property() : default float fill_value should be NaN" << std::endl;
3237            throw std::runtime_error("pd_test_sparse_array_fill_value_property failed: default float fill_value should be NaN");
3238        }
kind (pd_test_1_all.cpp:300)
290    void pd_test_boolean_array_dtype() {
291        std::cout << "========= BooleanArray: dtype ======================= ";
292
293        pandas::BooleanArray arr;
294        if (arr.dtype().name() != "boolean") {
295            std::cout << "  [FAIL] : in pd_test_boolean_array_dtype() : dtype name should be 'boolean'" << std::endl;
296            throw std::runtime_error("pd_test_boolean_array_dtype failed: dtype name");
297        }
298
299        if (arr.dtype().kind() != "b") {
300            std::cout << "  [FAIL] : in pd_test_boolean_array_dtype() : dtype kind should be 'b'" << std::endl;
301            throw std::runtime_error("pd_test_boolean_array_dtype failed: dtype kind");
302        }
303
304        std::cout << " -> tests passed" << std::endl;
305    }
306}
307
308int pd_test_boolean_array_main() {
309    std::cout << "====================================== running pd_test_boolean_array ==================================== " << std::endl;
name (pd_test_1_all.cpp:295)
285            throw std::runtime_error("pd_test_boolean_array_reductions failed: mean");
286        }
287
288        std::cout << " -> tests passed" << std::endl;
289    }
290
291    void pd_test_boolean_array_dtype() {
292        std::cout << "========= BooleanArray: dtype ======================= ";
293
294        pandas::BooleanArray arr;
295        if (arr.dtype().name() != "boolean") {
296            std::cout << "  [FAIL] : in pd_test_boolean_array_dtype() : dtype name should be 'boolean'" << std::endl;
297            throw std::runtime_error("pd_test_boolean_array_dtype failed: dtype name");
298        }
299
300        if (arr.dtype().kind() != "b") {
301            std::cout << "  [FAIL] : in pd_test_boolean_array_dtype() : dtype kind should be 'b'" << std::endl;
302            throw std::runtime_error("pd_test_boolean_array_dtype failed: dtype kind");
303        }
304
305        std::cout << " -> tests passed" << std::endl;
repr (pd_test_1_all.cpp:10906)
10896    std::cout << " -> tests passed" << std::endl;
10897}
10898
10899void pd_test_extension_index_repr() {
10900    std::cout << "========= repr =========================";
10901
10902    pandas::CategoricalArray arr({"a", "b", "c"});
10903    // Use ExtensionIndex<CategoricalArray> directly to test base class repr
10904    pandas::ExtensionIndex<pandas::CategoricalArray> idx(arr, "test");
10905
10906    std::string repr_str = idx.repr();
10907
10908    bool passed = (!repr_str.empty() && repr_str.find("ExtensionIndex") != std::string::npos);
10909    if (!passed) {
10910        std::cout << "  [FAIL] : in pd_test_extension_index_repr() : repr check failed" << std::endl;
10911        throw std::runtime_error("pd_test_extension_index_repr failed");
10912    }
10913
10914    std::cout << " -> tests passed" << std::endl;
10915}
type (pd_test_3_all.cpp:15450)
15440/**
15441 * Test Series.convert_dtypes() parameter flags
15442 */
15443void pd_test_series_convert_dtypes_flags() {
15444    std::cout << "========= Series.convert_dtypes() flags =================";
15445
15446    // Test convert_integer=false - with floats disabled too, so it becomes string/object
15447    pandas::Series<std::string> s({"1", "2", "3"}, "numbers");
15448    auto converted = s.convert_dtypes(true, true, false, true, false);  // convert_integer=false, convert_floating=false
15449
15450    // Should remain object type (Series<std::string> has dtype_name()="object")
15451    // When integer and floating are both disabled for integer-like strings, it falls back to string type
15452    if (converted->dtype_name() != "object") {
15453        std::cout << "  [FAIL] : dtype should be object when convert_integer=false and convert_floating=false, got " << converted->dtype_name() << std::endl;
15454        throw std::runtime_error("pd_test_series_convert_dtypes_flags failed: convert_integer");
15455    }
15456
15457    // Test convert_boolean=false - strings stay as object/string type
15458    pandas::Series<std::string> s_bool({"true", "false"}, "bools");
15459    auto converted_bool = s_bool.convert_dtypes(true, true, true, false, true);  // convert_boolean=false