整理凌乱的数据集

时间:2017-05-17 20:49:25

标签: python pandas

我试图使用pandas将以下数据集放在整齐的格式中。我相信我的变量是Group,Temperature,Flow,Pressure和Year但是我在使用pandas方法正确地重构它时遇到了麻烦。

  Group     Property   2012  2013  2014  2015  2016
0     A     Pressure   6057  1645   953  6333  5396
1     A  Temperature   5796  1494  1374  2013  3244
2     A         Flow   1425  1226  1903  1109  2805
3     B     Pressure  10522  1209  1312  2253  1232
4     B  Temperature   4712  1172  1877  2788  1163
5     B         Flow   1991  5366  1017  1582  5884

2 个答案:

答案 0 :(得分:2)

根据我对整洁数据的理解,您需要列中的变量。我将GroupYear解释为观察,将Property解释为变量。

df.set_index(
    ['Group', 'Property']
).rename_axis('Year', 1).stack().unstack('Property')

Property    Flow  Pressure  Temperature
Group Year                             
A     2012  1425      6057         5796
      2013  1226      1645         1494
      2014  1903       953         1374
      2015  1109      6333         2013
      2016  2805      5396         3244
B     2012  1991     10522         4712
      2013  5366      1209         1172
      2014  1017      1312         1877
      2015  1582      2253         2788
      2016  5884      1232         1163

答案 1 :(得分:1)

整理此数据集至少有三种解决方案:

让我们使用:set_indexstackunstack

df.set_index(['Group', 'Property']).rename_axis('Year',1).stack().unstack('Property').reset_index()

输出:

Property Group  Year  Flow  Pressure  Temperature
0            A  2012  1425      6057         5796
1            A  2013  1226      1645         1494
2            A  2014  1903       953         1374
3            A  2015  1109      6333         2013
4            A  2016  2805      5396         3244
5            B  2012  1991     10522         4712
6            B  2013  5366      1209         1172
7            B  2014  1017      1312         1877
8            B  2015  1582      2253         2788
9            B  2016  5884      1232         1163

其次,让我们使用:pivotstack

df.pivot(index='Group',columns='Property').stack(0).reset_index().rename(columns={'level_1':'Year'})

输出:

Property Group  Year  Flow  Pressure  Temperature
0            A  2012  1425      6057         5796
1            A  2013  1226      1645         1494
2            A  2014  1903       953         1374
3            A  2015  1109      6333         2013
4            A  2016  2805      5396         3244
5            B  2012  1991     10522         4712
6            B  2013  5366      1209         1172
7            B  2014  1017      1312         1877
8            B  2015  1582      2253         2788
9            B  2016  5884      1232         1163

第三,让我们使用:pd.meltset_indexunstack

pd.melt(df,id_vars=['Group','Property'],var_name='Year').set_index(['Group','Year','Property'])['value'].unstack('Property').reset_index()

输出:

Property Group  Year  Flow  Pressure  Temperature 
0            A  2012  1425      6057         5796
1            A  2013  1226      1645         1494
2            A  2014  1903       953         1374
3            A  2015  1109      6333         2013
4            A  2016  2805      5396         3244
5            B  2012  1991     10522         4712
6            B  2013  5366      1209         1172
7            B  2014  1017      1312         1877
8            B  2015  1582      2253         2788
9            B  2016  5884      1232         1163