I have a data set pulled from a database using pandas.io.sql.read_frame which looks like this
Period Category Projected Actual Previous
0 2013-01 A 1214432.94 3175516.32 3001149.50
1 2013-01 B 624010.78 867729.20 866639.38
2 2013-01 C 2533443.36 2314765.87 2482210.68
3 2013-01 D 5616228.49 5672648.92 5918737.79
4 2013-01 E 492184.31 1009281.36 990499.75
5 2013-01 F 32824689.07 29610034.26 32248832.59
6 2013-01 G 94192.33 152839.03 189061.80
7 2013-01 H 1271544.89 1545591.40 1054648.58
8 2013-01 I 8273369.88 8656894.51 8691683.73
9 2013-01 J 8540953.73 8012622.14 8671895.07
10 2013-01 K 8016059.13 8530401.75 9953181.37
11 2013-01 L 1190095.56 512354.65 459954.82
12 2013-01 M 850057.11 1077172.22 1097503.89
13 2013-02 A 1227779.01 2850482.70 3070764.66
14 2013-02 B 636124.55 822016.04 866802.59
15 2013-02 C 2581194.49 2471194.78 2681301.30
16 2013-02 D 5970719.17 5179206.09 5872806.59
17 2013-02 E 477820.01 1199334.74 1330452.48
18 2013-02 F 34537100.44 29082997.97 31982248.04
19 2013-02 G 92523.45 75865.03 93782.83
...
If I pivot the table using D.pivot_table(rows="Category", cols="Period", aggfunc="sum") I get a multi-indexed data frame looking like this
<class 'pandas.core.frame.DataFrame'>
Index: 13 entries, A ...
Data columns (total 33 columns):
(Projected, 2013-01) 13 non-null values
(Projected, 2013-02) 13 non-null values
(Projected, 2013-03) 13 non-null values
(Projected, 2013-04) 13 non-null values
(Projected, 2013-05) 13 non-null values
(Projected, 2013-06) 13 non-null values
(Projected, 2013-07) 13 non-null values
(Projected, 2013-08) 13 non-null values
(Projected, 2013-09) 13 non-null values
(Projected, 2013-10) 13 non-null values
(Projected, 2013-11) 12 non-null values
(Actual, 2013-01) 13 non-null values
(Actual, 2013-02) 13 non-null values
(Actual, 2013-03) 13 non-null values
(Actual, 2013-04) 13 non-null values
(Actual, 2013-05) 13 non-null values
(Actual, 2013-06) 13 non-null values
(Actual, 2013-07) 13 non-null values
(Actual, 2013-08) 13 non-null values
(Actual, 2013-09) 13 non-null values
(Actual, 2013-10) 13 non-null values
(Actual, 2013-11) 12 non-null values
(Previous, 2013-01) 13 non-null values
(Previous, 2013-02) 13 non-null values
(Previous, 2013-03) 13 non-null values
(Previous, 2013-04) 13 non-null values
(Previous, 2013-05) 13 non-null values
(Previous, 2013-06) 13 non-null values
(Previous, 2013-07) 13 non-null values
(Previous, 2013-08) 13 non-null values
(Previous, 2013-09) 13 non-null values
(Previous, 2013-10) 13 non-null values
(Previous, 2013-11) 12 non-null values
dtypes: float64(33)
But I don't want a hierarchical index on the columns. Instead, I would like to have the non-pivot columns (Projected, Actual, and Previous) as values in the form of triple (i.e. a Series) so the final table looks like this
Period 2013-01 2013-02 2013-03 ...
Group
A Series Series Series ...
B Series Series Series ...
C Series Series Series ...
D Series Series Series ...
...
Where each 'Series' is a pandas series of three numbers being the respective (Projected, Actual, and Previous) aggregate values.
I've looked at stack, unstack, various combination or rows, cols, and values arguments to pivot table and of the melt function in pandas.core.reshape, but none of them seem to do quite what I want.