Signature | Description | Parameters |
---|---|---|
template<typename ... Ts> DataFrame<I> get_data(const std::vector<const char *> col_names) const; |
This returns a DataFrame with index and col_names copied from the original DataFrame |
Ts: List types of col_names col_names: List of column names |
template<typename ... Ts> DataFrameView<I> get_view(const std::vector<const char *> col_names); |
It behaves like get_data(), but it returns a DataFrameView. A view is a DataFrame that is a reference to the original DataFrame. So if you modify anything in the view the original DataFrame will also be modified. NOTE: There are certain operations that you cannot do with a view. For example, you cannot add/delete columns, etc. NOTE: Views could not be const, becuase you can change original data through views. |
Ts: List types of col_names col_names: List of column names |
static void test_get_data() { std::cout << "\nTesting get_[data|view]() ..." << std::endl; std::vector<unsigned long> idx = { 123450, 123451, 123452, 123453, 123454, 123455, 123456, 123457, 123458, 123459, 123460, 123461, 123462, 123466 }; std::vector<double> d1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; std::vector<double> d2 = { 8, 9, 10, 11, 12, 13, 14, 20, 22, 23, 30, 31, 32, 1.89 }; std::vector<double> d3 = { 15, 16, 17, 18, 19, 20, 21, 0.34, 1.56, 0.34, 2.3, 0.1, 0.89, 0.45 }; std::vector<int> i1 = { 22, 23, 24, 25, 99, 100, 101, 3, 2 }; MyDataFrame df; df.load_data(std::move(idx), std::make_pair("col_1", d1), std::make_pair("col_2", d2), std::make_pair("col_3", d3), std::make_pair("col_4", i1)); auto df2 = df.get_data<double, int>({ "col_1", "col_4"}); assert((! df2.has_column("col_2"))); assert((! df2.has_column("col_3"))); assert((df2.get_column<double>("col_1")[11] == 12)); assert((df2.get_column<int>("col_4")[8] == 2)); assert((df2.get_index()[3] == 123453)); DataFrameView<unsigned long> df3 = df.get_view<double, int>({ "col_1", "col_4"}); assert((! df3.has_column("col_2"))); assert((! df3.has_column("col_3"))); assert((df3.get_column<double>("col_1")[11] == 12)); assert((df3.get_column<int>("col_4")[8] == 2)); assert((df3.get_index()[3] == 123453)); df3.get_index()[3] = 100; df3.get_column<int>("col_4")[8] = 101; df3.get_column<double>("col_1")[11] = 102.2; assert((df3.get_column<double>("col_1")[11] == 102.2)); assert((df3.get_column<int>("col_4")[8] == 101)); assert((df3.get_index()[3] == 100)); assert((df.get_column<double>("col_1")[11] == 102.2)); assert((df.get_column<int>("col_4")[8] == 101)); assert((df.get_index()[3] == 100)); }