数据透视表分组-python

时间:2019-09-09 11:34:48

标签: python pandas

尝试转置和分组数据,使其看起来像这样:

transposed and grouped data

当前按数据分组

              MTD-Total Revenue  YTD-Total Revenue  MTD-Room Revenue  YTD-Room Revenue  MTD-Room Nights  YTD-Room Nights  MTD-ADR  YTD-ADR  MTD-OCC%  YTD-OCC%
Market Group
Aff                         0.0                0.0        2026136.99       21546922.96            857.0           8650.0  2457.02  2551.87      4.99      4.16
Air                         0.0                0.0        2809312.53       32534587.15            925.0           9684.0  2392.08  3016.00      2.69      2.33
BAR                         0.0                0.0         470866.23        8341596.95            131.0           2481.0  3189.75  3133.08      0.76      1.19
Cas                         0.0                0.0        4801710.10       55466024.12           1652.0          18566.0  2365.23  2585.25      1.92      1.79
Com                         0.0                0.0        3873151.63       43857524.55           1088.0          11980.0  2449.43  2632.57      6.34      5.76
Cor                         0.0                0.0        7104841.79       88326080.23           2314.0          26836.0  1552.74  2919.07      4.14      3.97
Pro                         0.0                0.0         335358.36        1907348.23             97.0            562.0  3457.30  3393.86      2.26      1.08
Soc                         0.0                0.0          12706.96          82957.59              4.0             25.0  1588.37  3315.74      0.04      0.02
TA                          0.0                0.0        1016565.12       15563472.77            416.0           6797.0  2412.55  2229.46      4.84      6.54
Wal                         0.0                0.0         277267.66        3786378.41             68.0            812.0  4077.47  4663.03      1.58      1.56

Group by data

代码已运行:

pd.DataFrame(df.values.reshape(-1,5))

df.reset_index().pivot('Market Group', 'MTD-Total Revenue', 'YTD-Total Revenue')

如果要转置数据,其外观如何:df.T df.T

2 个答案:

答案 0 :(得分:0)

我认为您想要的是df.stack()方法。

这里是前两个公司和方法的演示。我没有数据,因此必须手动输入行。请注意,您必须在列表中具有列,在列表中具有公司名称的索引。我不知道原始数据的格式,但是如果您需要帮助,请告诉我。

enter image description here

答案 1 :(得分:0)

答案是:

df= pd.melt(df, id_vars=['Market Group'], value_vars=['MTD-Total Revenue','YTD-Total Revenue','MTD-Room Revenue','YTD-Room Revenue','MTD-Room Nights','YTD-Room Nights','MTD-ADR','YTD-ADR','MTD-OCC%','YTD-OCC%'])

与使用unstack或stack相比,这保留了标头。