Signature Description Parameters
template<typename T, typename V>
DataFrame
transpose(IndexVecType &&indices, const V &current_col_order, const V &new_col_names) const;
It transposes the data in the DataFrame.
The transpose() is only defined for DataFrame's that have a single data type.
NOTE: Since DataFrame columns have no ordering, the user must specify the order with current_col_order.
T: The single type for all data columns
V: The type of string vector specifying the new names for new columns after transpose
indices: A vector on indices for the new transposed DataFrame. Its length must equal the number of rows in this DataFrame. Otherwise an exception is thrown
current_col_order: A vector of strings specifying the order of columns in the original DataFrame.
new_col_names: A vector of strings, specifying the column names for the new transposed DataFrame. Its length must equal the number of rows in this DataFrame. Otherwise an exception is thrown
static void test_transpose()  {

    std::cout << "\nTesting transpose() ..." << std::endl;

    std::vector<unsigned long>  idx = { 123450, 123451, 123452, 123450, 123455, 123450, 123449 };
    std::vector<double> d1 = { 1, 2, 3, 4, 5, 6, 7 };
    std::vector<double> d2 = { 8, 9, 10, 11, 12, 13, 14 };
    std::vector<double> d3 = { 15, 16, 17, 18, 19, 20, 21 };
    std::vector<double> d4 = { 22, 23, 24, 25 };
    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", d4));

    std::vector<unsigned long>  tidx = { 100, 101, 102, 104 };
    std::vector<const char *>   tcol_names =
        { "tcol_1", "tcol_2", "tcol_3", "tcol_4", "tcol_5", "tcol_6", "tcol_7" };
    MyDataFrame                 tdf =
        df.transpose<double>(std::move(tidx),
                             { "col_1", "col_2", "col_3", "col_4" },
                             tcol_names);

    std::cout << "Original DataFrame:" << std::endl;
    df.write<std::ostream, unsigned long, double>(std::cout);
    std::cout << "Transposed DataFrame:" << std::endl;
    tdf.write<std::ostream, unsigned long, double>(std::cout);
}