Skip to content

Commit fe36303

Browse files
committed
updated tests
1 parent 217ba79 commit fe36303

File tree

1 file changed

+38
-10
lines changed

1 file changed

+38
-10
lines changed

pandas/tests/reshape/test_pivot.py

+38-10
Original file line numberDiff line numberDiff line change
@@ -1109,18 +1109,46 @@ def test_pivot_margins_name_unicode(self):
11091109
expected = pd.DataFrame(index=index)
11101110
tm.assert_frame_equal(table, expected)
11111111

1112-
def test_pivot_func_strings(self):
1112+
def test_pivot_string_as_func(self):
11131113
# GH #18713
1114-
f = lambda func: pivot_table(self.data, values=['D', 'E'],
1115-
index=['A', 'B'], columns='C',
1116-
aggfunc=func)
1117-
result = f('sum')
1118-
expected = f(np.sum)
1114+
data = DataFrame({'A': ['foo', 'foo', 'foo', 'foo', 'bar', 'bar',
1115+
'bar', 'bar', 'foo', 'foo', 'foo'],
1116+
'B': ['one', 'one', 'one', 'two', 'one', 'one',
1117+
'one', 'two', 'two', 'two', 'one'],
1118+
'C': range(11)})
1119+
1120+
result = pivot_table(data, index='A', columns='B', aggfunc='sum')
1121+
mi = MultiIndex(levels=[['C'], ['one', 'two']],
1122+
labels=[[0, 0], [0, 1]], names=[None, 'B'])
1123+
expected = DataFrame({('C', 'one'): {'bar': 15, 'foo': 13},
1124+
('C', 'two'): {'bar': 7, 'foo': 20}},
1125+
columns=mi).rename_axis('A')
11191126
tm.assert_frame_equal(result, expected)
1120-
result = f(['mean', 'std'])
1121-
means = f(np.mean)
1122-
stds = f(np.std)
1123-
expected = concat([means, stds], keys=['mean', 'std'], axis=1)
1127+
1128+
result = pivot_table(data, index='A', columns='B',
1129+
aggfunc=['sum', 'mean'])
1130+
mi = MultiIndex(levels=[['sum', 'mean'], ['C'], ['one', 'two']],
1131+
labels=[[0, 0, 1, 1], [0, 0, 0, 0], [0, 1, 0, 1]],
1132+
names=[None, None, 'B'])
1133+
expected = DataFrame({('mean', 'C', 'one'): {'bar': 5.0, 'foo': 3.25},
1134+
('mean', 'C', 'two'): {'bar': 7.0,
1135+
'foo': 6.666666666666667},
1136+
('sum', 'C', 'one'): {'bar': 15, 'foo': 13},
1137+
('sum', 'C', 'two'): {'bar': 7, 'foo': 20}},
1138+
columns=mi).rename_axis('A')
1139+
tm.assert_frame_equal(result, expected)
1140+
1141+
funcs = [('sum', np.sum), ('mean', np.mean), ('std', np.std),
1142+
(['sum', 'mean'], [np.sum, np.mean]),
1143+
(['sum', 'std'], [np.sum, np.std]),
1144+
(['std', 'mean'], [np.std, np.mean])]
1145+
1146+
@pytest.mark.parametrize("f, f_numpy", funcs)
1147+
def test_pivot_string_func_vs_func(self, f, f_numpy):
1148+
# GH #18713
1149+
result = pivot_table(self.data, index='A', columns='B', aggfunc=f)
1150+
expected = pivot_table(self.data, index='A', columns='B',
1151+
aggfunc=f_numpy)
11241152
tm.assert_frame_equal(result, expected)
11251153

11261154

0 commit comments

Comments
 (0)