@@ -25,14 +25,73 @@ def test_melt():
25
25
df ['id1' ] = (df ['A' ] > 0 ).astype (int )
26
26
df ['id2' ] = (df ['B' ] > 0 ).astype (int )
27
27
28
- molten1 = melt (df )
29
- molten2 = melt (df , id_vars = ['id1' ])
30
- molten3 = melt (df , id_vars = ['id1' , 'id2' ])
31
- molten4 = melt (df , id_vars = ['id1' , 'id2' ],
28
+ var_name = 'var'
29
+ value_name = 'val'
30
+
31
+ # Default column names
32
+ result = melt (df )
33
+ result1 = melt (df , id_vars = ['id1' ])
34
+ result2 = melt (df , id_vars = ['id1' , 'id2' ])
35
+ result3 = melt (df , id_vars = ['id1' , 'id2' ],
32
36
value_vars = 'A' )
33
- molten5 = melt (df , id_vars = ['id1' , 'id2' ],
37
+ result4 = melt (df , id_vars = ['id1' , 'id2' ],
34
38
value_vars = ['A' , 'B' ])
35
-
39
+
40
+ expected4 = DataFrame ({'id1' : df ['id1' ].tolist () * 2 ,
41
+ 'id2' : df ['id2' ].tolist () * 2 ,
42
+ 'variable' : ['A' ]* 10 + ['B' ]* 10 ,
43
+ 'value' : df ['A' ].tolist () + df ['B' ].tolist ()},
44
+ columns = ['id1' , 'id2' , 'variable' , 'value' ])
45
+ tm .assert_frame_equal (result4 , expected4 )
46
+
47
+ # Supply custom name for the 'variable' column
48
+ result5 = melt (df , var_name = var_name )
49
+ result6 = melt (df , id_vars = ['id1' ], var_name = var_name )
50
+ result7 = melt (df , id_vars = ['id1' , 'id2' ], var_name = var_name )
51
+ result8 = melt (df , id_vars = ['id1' , 'id2' ],
52
+ value_vars = 'A' , var_name = var_name )
53
+ result9 = melt (df , id_vars = ['id1' , 'id2' ],
54
+ value_vars = ['A' , 'B' ], var_name = var_name )
55
+
56
+ expected9 = DataFrame ({'id1' : df ['id1' ].tolist () * 2 ,
57
+ 'id2' : df ['id2' ].tolist () * 2 ,
58
+ var_name : ['A' ]* 10 + ['B' ]* 10 ,
59
+ 'value' : df ['A' ].tolist () + df ['B' ].tolist ()},
60
+ columns = ['id1' , 'id2' , var_name , 'value' ])
61
+ tm .assert_frame_equal (result9 , expected9 )
62
+
63
+ # Supply custom name for the 'value' column
64
+ result10 = melt (df , value_name = value_name )
65
+ result11 = melt (df , id_vars = ['id1' ], value_name = value_name )
66
+ result12 = melt (df , id_vars = ['id1' , 'id2' ], value_name = value_name )
67
+ result13 = melt (df , id_vars = ['id1' , 'id2' ],
68
+ value_vars = 'A' , value_name = value_name )
69
+ result14 = melt (df , id_vars = ['id1' , 'id2' ],
70
+ value_vars = ['A' , 'B' ], value_name = value_name )
71
+
72
+ expected14 = DataFrame ({'id1' : df ['id1' ].tolist () * 2 ,
73
+ 'id2' : df ['id2' ].tolist () * 2 ,
74
+ 'variable' : ['A' ]* 10 + ['B' ]* 10 ,
75
+ value_name : df ['A' ].tolist () + df ['B' ].tolist ()},
76
+ columns = ['id1' , 'id2' , 'variable' , value_name ])
77
+ tm .assert_frame_equal (result14 , expected14 )
78
+
79
+ # Supply custom names for the 'variable' and 'value' columns
80
+ result15 = melt (df , var_name = var_name , value_name = value_name )
81
+ result16 = melt (df , id_vars = ['id1' ], var_name = var_name , value_name = value_name )
82
+ result17 = melt (df , id_vars = ['id1' , 'id2' ],
83
+ var_name = var_name , value_name = value_name )
84
+ result18 = melt (df , id_vars = ['id1' , 'id2' ],
85
+ value_vars = 'A' , var_name = var_name , value_name = value_name )
86
+ result19 = melt (df , id_vars = ['id1' , 'id2' ],
87
+ value_vars = ['A' , 'B' ], var_name = var_name , value_name = value_name )
88
+
89
+ expected19 = DataFrame ({'id1' : df ['id1' ].tolist () * 2 ,
90
+ 'id2' : df ['id2' ].tolist () * 2 ,
91
+ var_name : ['A' ]* 10 + ['B' ]* 10 ,
92
+ value_name : df ['A' ].tolist () + df ['B' ].tolist ()},
93
+ columns = ['id1' , 'id2' , var_name , value_name ])
94
+ tm .assert_frame_equal (result19 , expected19 )
36
95
37
96
def test_convert_dummies ():
38
97
df = DataFrame ({'A' : ['foo' , 'bar' , 'foo' , 'bar' ,
0 commit comments