CustomBusinessDay#
-
class pandas::CustomBusinessDay#
pandas C++ class.
Example#
#include <pandas/pandas.h>
using namespace pandas;
// Use CustomBusinessDay
CustomBusinessDay obj;
// ... operations ...
Constructors#
Signature |
Location |
Example |
|---|---|---|
|
pd_dateoffset.h:1748 |
Aggregation#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
numpy::datetime64 |
pd_dateoffset.h:1770 |
Comparison#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
bool |
pd_dateoffset.h:1754 |
Type Checking#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
bool |
pd_dateoffset.h:1760 |
|
|
bool |
pd_dateoffset.h:1768 |
|
|
bool |
pd_dateoffset.h:1785 |
Other Methods#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
static int64_t |
pd_dateoffset.h:1718 |
|
|
std::string |
pd_dateoffset.h:1766 |
|
|
const std::set<int64_t>& |
pd_dateoffset.h:1752 |
|
|
std::string |
pd_dateoffset.h:1767 |
|
|
static uint8_t |
pd_dateoffset.h:1725 |
|
|
uint8_t |
pd_dateoffset.h:1751 |
Code Examples#
The following examples are extracted from the test suite.
CustomBusinessDay (pd_test_5_all.cpp:124147)
124137 if (subclass == "Second") return pandas::Second(n).repr();
124138 if (subclass == "Week") return pandas::Week(n).repr();
124139 if (subclass == "MonthEnd") return pandas::MonthEnd(n).repr();
124140 if (subclass == "MonthBegin") return pandas::MonthBegin(n).repr();
124141 if (subclass == "Milli") return pandas::Milli(n).repr();
124142 if (subclass == "Micro") return pandas::Micro(n).repr();
124143 if (subclass == "Nano") return pandas::Nano(n).repr();
124144 if (subclass == "BusinessMonthEnd") return pandas::BusinessMonthEnd(n).repr();
124145 if (subclass == "BusinessMonthBegin") return pandas::BusinessMonthBegin(n).repr();
124146 if (subclass == "BusinessHour") return pandas::BusinessHour(n).repr();
124147 if (subclass == "CustomBusinessDay") return pandas::CustomBusinessDay(n).repr();
124148 if (subclass == "CustomBusinessHour") return pandas::CustomBusinessHour(n).repr();
124149 if (subclass == "YearEnd") return pandas::YearEnd(n, false, anchor_value).repr();
124150 if (subclass == "YearBegin") return pandas::YearBegin(n, false, anchor_value).repr();
124151 if (subclass == "QuarterEnd") return pandas::QuarterEnd(n, false, anchor_value).repr();
124152 if (subclass == "QuarterBegin") return pandas::QuarterBegin(n, false, anchor_value).repr();
124153 if (subclass == "BQuarterEnd") return pandas::BQuarterEnd(n, false, anchor_value).repr();
124154 if (subclass == "BQuarterBegin") return pandas::BQuarterBegin(n, false, anchor_value).repr();
124155 if (subclass == "BYearEnd") return pandas::BYearEnd(n, false, anchor_value).repr();
124156 if (subclass == "BYearBegin") return pandas::BYearBegin(n, false, anchor_value).repr();
124157 throw std::runtime_error("unknown subclass: " + subclass);
apply (pd_test_1_all.cpp:11244)
11234 void pd_test_func_apply_dataframe_apply_axis0() {
11235 std::cout << "========= DataFrame apply axis=0 ======================";
11236
11237 std::map<std::string, std::vector<double>> data = {
11238 {"A", {1.0, 2.0, 3.0}},
11239 {"B", {4.0, 5.0, 6.0}}
11240 };
11241 pandas::DataFrame df(data);
11242
11243 // apply axis=0 applies function to each column
11244 auto result = df.apply([](const std::vector<double>& col) {
11245 return std::accumulate(col.begin(), col.end(), 0.0);
11246 }, 0);
11247
11248 bool passed = true;
11249
11250 // Plan F·dtype: axis=0 reduce now returns a single "result" column
11251 // with the original column names ("A", "B") as the row index.
11252 // Sum of A: 1+2+3=6, Sum of B: 4+5+6=15
11253 const auto& result_col = result["result"];
11254 double sum_a = std::stod(result_col.get_value_str(0));
equals (pd_test_1_all.cpp:5866)
5856 std::cout << "========= equals ======================================";
5857
5858 pandas::CategoricalArray arr1({"a", "b", "a"});
5859 pandas::CategoricalArray arr2({"a", "b", "a"});
5860 pandas::CategoricalArray arr3({"a", "b", "c"});
5861
5862 pandas::CategoricalIndex idx1(arr1);
5863 pandas::CategoricalIndex idx2(arr2);
5864 pandas::CategoricalIndex idx3(arr3);
5865
5866 bool passed = (idx1.equals(idx2) && !idx1.equals(idx3));
5867 if (!passed) {
5868 std::cout << " [FAIL] : in pd_test_categorical_index_equals()" << std::endl;
5869 throw std::runtime_error("pd_test_categorical_index_equals failed");
5870 }
5871
5872 std::cout << " -> tests passed" << std::endl;
5873}
5874
5875void pd_test_categorical_index_identical() {
5876 std::cout << "========= identical ===================================";
is_on_offset (pd_test_3_all.cpp:18263)
18253void pd_test_business_day_offset() {
18254 std::cout << "========= BusinessDay offset ===========================";
18255
18256 pandas::BusinessDay offset(1);
18257 if (offset.freqstr() != "B") {
18258 std::cout << " [FAIL] : BusinessDay freqstr() failed" << std::endl;
18259 throw std::runtime_error("pd_test_business_day_offset: freqstr() failed");
18260 }
18261
18262 // Test is_on_offset (Friday = weekday)
18263 numpy::datetime64 friday("2020-01-17"); // Friday
18264 if (!offset.is_on_offset(friday)) {
18265 std::cout << " [FAIL] : BusinessDay is_on_offset(Friday) failed" << std::endl;
18266 throw std::runtime_error("pd_test_business_day_offset: is_on_offset(Friday) failed");
18267 }
18268
18269 // Test is_on_offset (Saturday = weekend)
18270 numpy::datetime64 saturday("2020-01-18"); // Saturday
18271 if (offset.is_on_offset(saturday)) {
18272 std::cout << " [FAIL] : BusinessDay is_on_offset(Saturday) should be false" << std::endl;
freqstr (pd_test_1_all.cpp:2671)
2661 }
2662
2663 pandas::PeriodDtype dtype_y("Y");
2664 if (dtype_y.name() != "period[Y]") {
2665 std::cout << " [FAIL] : dtype_y.name() should be 'period[Y]'" << std::endl;
2666 throw std::runtime_error("pd_test_period_array_freq_validation failed: dtype name Y");
2667 }
2668
2669 // Test frequency string
2670 pandas::PeriodArray arr(std::vector<std::string>{"2024-01-15"}, "D");
2671 if (arr.freqstr() != "D") {
2672 std::cout << " [FAIL] : arr.freqstr() should be 'D'" << std::endl;
2673 throw std::runtime_error("pd_test_period_array_freq_validation failed: freqstr");
2674 }
2675
2676 std::cout << " -> tests passed" << std::endl;
2677 }
2678
2679 void pd_test_period_array_year_month_quarter() {
2680 std::cout << "========= PeriodArray: year/month/quarter components ======================= ";
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;
weekmask (pd_test_3_all.cpp:1377)
1367 true,
1368 "business_dates"
1369 );
1370
1371 // Should have business days (Mon-Fri = 5 days in this range)
1372 if (result.size() < 1) {
1373 std::cout << " [FAIL] : in pd_test_3_all_bdate_range() : expected at least 1 business day" << std::endl;
1374 throw std::runtime_error("pd_test_3_all_bdate_range failed: no days returned");
1375 }
1376
1377 // Test with custom weekmask (exclude Fridays)
1378 pandas::DatetimeIndex result2 = pandas::bdate_range(
1379 "2024-01-01",
1380 "2024-01-07", // Full week
1381 std::nullopt,
1382 "B",
1383 std::nullopt,
1384 true,
1385 "custom_days",
1386 "Mon Tue Wed Thu" // No Fri, Sat, Sun
1387 );