FloatingDtype#
-
class pandas::FloatingDtype#
Data type class for pandas extension types.
Example#
#include <pandas/pandas.h>
using namespace pandas;
// Use FloatingDtype
FloatingDtype obj;
// ... operations ...
Constructors#
Signature |
Location |
Example |
|---|---|---|
|
pd_floating_dtype.h:31 |
Statistics#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
T |
pd_floating_dtype.h:82 |
|
|
T |
pd_floating_dtype.h:75 |
Iteration#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
size_t |
pd_floating_dtype.h:53 |
Type Checking#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
static bool |
pd_floating_dtype.h:96 |
|
|
static bool |
pd_floating_dtype.h:110 |
|
|
static bool |
pd_floating_dtype.h:103 |
Other Methods#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
T |
pd_floating_dtype.h:89 |
|
|
std::string |
pd_floating_dtype.h:61 |
|
|
bool |
pd_floating_dtype.h:119 |
|
|
std::string |
pd_floating_dtype.h:38 |
|
|
numpy::DType |
pd_floating_dtype.h:46 |
|
|
const std::type_info& |
pd_floating_dtype.h:68 |
Code Examples#
The following examples are extracted from the test suite.
is_nan (pd_test_5_all.cpp:90959)
90949 pandas::SetItemResult expected_kind,
90950 int& local_fail) {
90951 pandas_tests::check(
90952 got.aligned_values.size() == expected_size,
90953 label + ".aligned_values_size", local_fail);
90954 pandas_tests::check(
90955 got.kind == expected_kind,
90956 label + ".kind", local_fail);
90957}
90958
90959static bool is_nan(double v) {
90960 return v != v;
90961}
90962
90963void case_1_positional_int64() {
90964 int local_fail = 0;
90965 auto df = make_abc_frame();
90966 auto s = make_labelled_series<std::int64_t>(
90967 {10, 20, 30}, {"a", "b", "c"});
90968 auto r = pandas::align_series_to_dataframe<std::int64_t>(
90969 s, df.index(), /*preserve_dtype=*/true);
epsilon (pd_test_5_all.cpp:107634)
107624 // Block I (Family 3/4 breadth): denormals + extremes.
107625 if (label == "float64_denorm_min") {
107626 const double tiny = std::numeric_limits<double>::min();
107627 return {tiny / 2.0, tiny / 4.0, 0.0};
107628 }
107629 if (label == "float64_smallest_normal") {
107630 const double tiny = std::numeric_limits<double>::min();
107631 return {tiny, -tiny, 0.0};
107632 }
107633 if (label == "float64_dbl_eps") {
107634 const double eps = std::numeric_limits<double>::epsilon();
107635 return {eps, -eps, 1.0};
107636 }
107637 if (label == "float64_lowest") {
107638 return {std::numeric_limits<double>::lowest(), 0.0,
107639 std::numeric_limits<double>::max()};
107640 }
107641 if (label == "float64_1e_minus_300") return {1e-300, -1e-300, 0.0};
107642 if (label == "float64_1e_plus_300") return {1e300, -1e300, 1.5e300};
107643 throw std::runtime_error("unknown float64 label: " + label);
107644}
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;
matches (pd_test_5_all.cpp:15741)
15731 for (size_t i = 0; i < 5; ++i) {
15732 // DatetimeIndex serializes individual entries via get_value_str()
15733 bdate_first5.push_back(idx.get_value_str(i));
15734 }
15735 std::cout << " case_4 bdate_range first 5: ";
15736 for (auto& s : bdate_first5) std::cout << s << " ";
15737 std::cout << "\n case_4 expected first 5: ";
15738 for (auto& s : expected_visible_head) std::cout << s << " ";
15739 std::cout << "\n";
15740
15741 // First date matches (both start at 2023-01-04)
15742 pandas_tests::check(contains(bdate_first5[0], "2023-01-04"),
15743 "case_4.first_bdate_is_2023-01-04", local_fail);
15744
15745 // Second date should differ: bdate gives 2023-01-05, fixture wants 2023-01-20
15746 bool second_matches_expected = contains(bdate_first5[1], "2023-01-20");
15747 pandas_tests::check(!second_matches_expected,
15748 "case_4.bdate_NOT_matching_filtered_fixture", local_fail);
15749 // The bdate second is the next business day:
15750 pandas_tests::check(contains(bdate_first5[1], "2023-01-05"),
15751 "case_4.bdate_second_is_2023-01-05_sequential", local_fail);
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;
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