Python pandas:将数据从'dummy'日期列重新排列到行

时间:2018-03-27 08:49:41

标签: python pandas dataframe

我正在尝试运行ML模型,但我的自变量的结构与我的因变量不同。

自变量的结构如下:

id . month/year . var_a . var_b
0 .  01/2016 .    1 .     2 
0 .  02/2016 .    2 .     1 
1 .  01/2016 .    2 .     3 

所以基本上,ID不是唯一的,而是与月/年列成唯一的对。

因变量看起来像这样:

id . 01/2016 . 02/2016 . .... 
0    0 .       1 .  
1 .  1 .       0  
2 .  0 .       0 

因此,此数据框每个月都有一列,0或1表示我的分类是或否。理想情况下,我希望依赖表的形状类似于独立的数据帧:

因变量的期望输出:

id . month/year . y
0 .  01/2016 .    0
0 .  02/2016 .    1
1 .  01/2016 .    1
1 .  02/2016 .    0
2 .  01/2016 .    0
2 .  02/2016 .    0

我无法绕过它如何做到这一点。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

也许尝试pivot_table

df_pivot = pd.pivot_table(df,index=['id'],columns=['month/year'])

给你

       var_a           var_b
date 01/2016 02/2016 01/2016 02/2016
id
0        1.0     2.0     2.0     1.0
1        2.0     NaN     3.0     NaN

然后如果你想要展平多指数:

df_pivot.columns = [' '.join(col).strip() for col in df_pivot.columns.values]

给你:

    var_a 01/2016  var_a 02/2016  var_b 01/2016  var_b 02/2016
id
0             1.0            2.0            2.0            1.0
1             2.0            NaN            3.0            NaN