FuncArg#

class pandas::FuncArg#

pandas C++ class.

Example#

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

// Use FuncArg
FuncArg obj;
// ... operations ...

Constructors#

Signature

Location

Example

FuncArg() = default

pd_func_dispatch.h:163

FuncArg(FuncArg&&) noexcept = default

pd_func_dispatch.h:164

FuncArg(const FuncArg&) = delete

pd_func_dispatch.h:166

Construction#

Signature

Return Type

Location

Example

static FuncArg from_array_like(ArrayLikeHandle h)

static FuncArg

pd_func_dispatch.h:214

static FuncArg from_callable_handle(CallableHandle h)

static FuncArg

pd_func_dispatch.h:182

View

static FuncArg from_callable_list(std::vector<FuncSpec> fns)

static FuncArg

pd_func_dispatch.h:188

static FuncArg from_dict_spec(std::map<std::string, std::vector<FuncSpec>> d)

static FuncArg

pd_func_dispatch.h:194

View

static FuncArg from_index(std::shared_ptr<IndexBase> ix)

static FuncArg

pd_func_dispatch.h:208

static FuncArg from_named_agg_list(std::vector<FuncDispatchNamedAggSpec> v)

static FuncArg

pd_func_dispatch.h:200

View

static FuncArg from_series(std::shared_ptr<Series<T>> s)

FuncArg

pd_func_dispatch.h:207

static FuncArg from_string_list(std::vector<std::string> names)

static FuncArg

pd_func_dispatch.h:176

View

static FuncArg from_string_name(std::string name)

static FuncArg

pd_func_dispatch.h:170

View

Other Methods#

Signature

Return Type

Location

Example

static FuncArg none()

static FuncArg

pd_func_dispatch.h:220

View

Code Examples#

The following examples are extracted from the test suite.

from_callable_handle (pd_test_5_all.cpp:53781)
53771                  << "  actual dtype:   [" << dts[0] << "]\n";
53772    }
53773}
53774
53775static void f_series_apply_dispatch_502719_case_H1_dispatch_callable_square_int(int& local_fail) {
53776    std::cout << "-- case_H1_dispatch_callable_square_int\n";
53777    pandas::Series<std::int64_t> s({2, 3, 4}, "v");
53778    auto h = dispatch_test_helpers::make_stub_callable(
53779        dispatch_test_helpers::test_cell_int_cb([](double x) { return static_cast<std::int64_t>(x * x); }),
53780        "square");
53781    pandas::Result r = s.apply_dispatch(pandas::FuncArg::from_callable_handle(h));
53782    bool got = std::holds_alternative<std::unique_ptr<pandas::Series<numpy::float64>>>(r.value);
53783    pandas_tests::check(got, "case_H1.is_series_float64", local_fail);
53784    if (!got) return;
53785    auto& sp = std::get<std::unique_ptr<pandas::Series<numpy::float64>>>(r.value);
53786    bool ok = (sp->size() == 3) && (*sp)[0] == 4.0 && (*sp)[1] == 9.0 && (*sp)[2] == 16.0;
53787    pandas_tests::check(ok, "case_H1.values_squared", local_fail);
53788}
53789
53790static void f_series_apply_dispatch_502719_case_H2_dispatch_callable_half_float(int& local_fail) {
53791    std::cout << "-- case_H2_dispatch_callable_half_float\n";
from_dict_spec (pd_test_5_all.cpp:53824)
53814    pandas_tests::check(ok, "case_H3.value_min_1", local_fail);
53815}
53816
53817static void f_series_apply_dispatch_502719_case_H4_funcarg_dict_spec_kind(int& local_fail) {
53818    std::cout << "-- case_H4_funcarg_dict_spec_kind\n";
53819    std::map<std::string, std::vector<pandas::FuncSpec>> dict_specs;
53820    pandas::FuncSpec sum_fs;
53821    sum_fs.kind = pandas::FuncSpec::Kind::StringName;
53822    sum_fs.name = "sum";
53823    dict_specs["v"].push_back(std::move(sum_fs));
53824    auto fa = pandas::FuncArg::from_dict_spec(std::move(dict_specs));
53825    pandas_tests::check(fa.kind == pandas::FuncArgKind::DictSpec, "case_H4.dict_spec_kind", local_fail);
53826    pandas_tests::check(fa.dict_specs.size() == 1, "case_H4.dict_specs_size_1", local_fail);
53827    pandas_tests::check(fa.dict_specs.at("v").size() == 1, "case_H4.dict_v_size_1", local_fail);
53828}
53829
53830static void f_series_apply_dispatch_502719_case_H5_dispatcher_unknown_throws(int& local_fail) {
53831    std::cout << "-- case_H5_dispatcher_unknown_throws\n";
53832    pandas::FuncDispatcher disp;
53833    pandas::FuncArg fa;
53834    fa.kind = pandas::FuncArgKind::Unknown;
from_named_agg_list (pd_test_5_all.cpp:110979)
110969    pandas_tests::check(dfp->nrows() == 2, "case_H3.nrows_2", local_fail);
110970}
110971
110972static void f_groupby_agg_dispatch_a91f4c_case_H4_funcarg_named_agg_kind(int& local_fail) {
110973    std::cout << "-- case_H4_funcarg_named_agg_kind\n";
110974    pandas::FuncDispatchNamedAggSpec spec;
110975    spec.out_name = "v_total";
110976    spec.in_col   = "v";
110977    spec.fn.kind  = pandas::FuncSpec::Kind::StringName;
110978    spec.fn.name  = "sum";
110979    auto fa = pandas::FuncArg::from_named_agg_list({std::move(spec)});
110980    pandas_tests::check(fa.kind == pandas::FuncArgKind::NamedAggList, "case_H4.kind", local_fail);
110981    pandas_tests::check(fa.named_aggs.size() == 1, "case_H4.size_1", local_fail);
110982    pandas_tests::check(fa.named_aggs[0].out_name == "v_total", "case_H4.out_name", local_fail);
110983    pandas_tests::check(fa.named_aggs[0].in_col == "v", "case_H4.in_col", local_fail);
110984}
110985
110986static void f_groupby_agg_dispatch_a91f4c_case_H5_dfgb_agg_funcarg_named(int& local_fail) {
110987    std::cout << "-- case_H5_dfgb_agg_funcarg_named\n";
110988    pandas::DataFrame df_in = make_simple_strkey_float_df();
110989    auto gb = df_in.groupby("k");
from_string_list (pd_test_5_all.cpp:110964)
110954    pandas_tests::check(got, "case_H2.is_dataframe", local_fail);
110955    if (!got) return;
110956    auto& dfp = std::get<std::unique_ptr<pandas::DataFrame>>(r.value);
110957    pandas_tests::check(dfp->nrows() == 2, "case_H2.nrows_2", local_fail);
110958}
110959
110960static void f_groupby_agg_dispatch_a91f4c_case_H3_dfgb_agg_funcarg_string_list(int& local_fail) {
110961    std::cout << "-- case_H3_dfgb_agg_funcarg_string_list\n";
110962    pandas::DataFrame df_in = make_simple_strkey_float_df();
110963    auto gb = df_in.groupby("k");
110964    pandas::Result r = gb.agg(pandas::FuncArg::from_string_list({"sum", "mean"}));
110965    bool got = std::holds_alternative<std::unique_ptr<pandas::DataFrame>>(r.value);
110966    pandas_tests::check(got, "case_H3.is_dataframe", local_fail);
110967    if (!got) return;
110968    auto& dfp = std::get<std::unique_ptr<pandas::DataFrame>>(r.value);
110969    pandas_tests::check(dfp->nrows() == 2, "case_H3.nrows_2", local_fail);
110970}
110971
110972static void f_groupby_agg_dispatch_a91f4c_case_H4_funcarg_named_agg_kind(int& local_fail) {
110973    std::cout << "-- case_H4_funcarg_named_agg_kind\n";
110974    pandas::FuncDispatchNamedAggSpec spec;
from_string_name (pd_test_5_all.cpp:53808)
53798    pandas_tests::check(got, "case_H2.is_series_float64", local_fail);
53799    if (!got) return;
53800    auto& sp = std::get<std::unique_ptr<pandas::Series<numpy::float64>>>(r.value);
53801    bool ok = (sp->size() == 3) && (*sp)[0] == 2.0 && (*sp)[1] == 4.0 && (*sp)[2] == 8.0;
53802    pandas_tests::check(ok, "case_H2.values_halved", local_fail);
53803}
53804
53805static void f_series_apply_dispatch_502719_case_H3_dispatch_string_name_min(int& local_fail) {
53806    std::cout << "-- case_H3_dispatch_string_name_min\n";
53807    pandas::Series<numpy::float64> s({3.0, 1.0, 5.0}, "v");
53808    pandas::Result r = s.apply_dispatch(pandas::FuncArg::from_string_name("min"));
53809    bool got = std::holds_alternative<std::unique_ptr<pandas::Series<numpy::float64>>>(r.value);
53810    pandas_tests::check(got, "case_H3.is_series_float64", local_fail);
53811    if (!got) return;
53812    auto& sp = std::get<std::unique_ptr<pandas::Series<numpy::float64>>>(r.value);
53813    bool ok = (sp->size() == 1) && (*sp)[0] == 1.0;
53814    pandas_tests::check(ok, "case_H3.value_min_1", local_fail);
53815}
53816
53817static void f_series_apply_dispatch_502719_case_H4_funcarg_dict_spec_kind(int& local_fail) {
53818    std::cout << "-- case_H4_funcarg_dict_spec_kind\n";
none (pd_test_5_all.cpp:90413)
90403                                    pandas::FillValue::of_bool(true));
90404        (void)r;
90405    }, local_fail);
90406}
90407
90408static void f_20_847312_dispatch_complex_none(int& local_fail) {
90409    std::cout << "-- f_20_847312_dispatch_complex_none\n";
90410    expect_value_error_duplicate("c12_dispatch_complex_none", [] {
90411        auto s = make_series<cplx>({{1, 2}, {3, 4}, {5, 6}}, {"c1", "c1", "c2"});
90412        auto r = s.reindex_dispatch({"c1", "c2", "c3"}, "",
90413                                    pandas::FillValue::none());
90414        (void)r;
90415    }, local_fail);
90416}
90417
90418static void f_20_847313_df_dup_rows_axis0(int& local_fail) {
90419    std::cout << "-- f_20_847313_df_dup_rows_axis0\n";
90420    expect_value_error_duplicate("c13_df_dup_rows_axis0", [] {
90421        std::vector<pandas::Series<std::int64_t>> cols;
90422        cols.emplace_back(std::vector<std::int64_t>{10, 20, 30});
90423        cols.emplace_back(std::vector<std::int64_t>{40, 50, 60});