Skip to content

Commit 2952e19

Browse files
committed
modified: pandas/tests/reshape/test_pivot_multilevel.py
- Added two tests, :func:`test_pivot_table_values_in_columns` and :func:`test_pivot_table_values_in_index`, to ensure that the `values` param is still used when the argument is shared between the `columns` and `values` params, and `index` and `values` params.
1 parent d796014 commit 2952e19

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

pandas/tests/reshape/test_pivot_multilevel.py

+46
Original file line numberDiff line numberDiff line change
@@ -250,3 +250,49 @@ def test_pivot_df_multiindex_index_none():
250250
columns=Index(["label1", "label2"], name="label"),
251251
)
252252
tm.assert_frame_equal(result, expected)
253+
254+
255+
def test_pivot_table_values_in_columns():
256+
data = [
257+
["A", 1, 50, -1],
258+
["B", 1, 100, -2],
259+
["A", 2, 100, -2],
260+
["B", 2, 200, -4],
261+
]
262+
df = pd.DataFrame(data=data, columns=["index", "col", "value", "extra"])
263+
result = df.pivot_table(values="value", index="index", columns=["col", "value"])
264+
nan = np.nan
265+
e_data = [
266+
[50.0, nan, 100.0, nan],
267+
[nan, 100.0, nan, 200.0],
268+
]
269+
e_index = Index(data=["A", "B"], name="index")
270+
e_cols = MultiIndex.from_arrays(
271+
arrays=[[1, 1, 2, 2], [50, 100, 100, 200]], names=["col", "value"]
272+
)
273+
expected = pd.DataFrame(data=e_data, index=e_index, columns=e_cols)
274+
tm.assert_frame_equal(left=result, right=expected)
275+
276+
277+
def test_pivot_table_values_in_index():
278+
data = [
279+
["A", 1, 50, -1],
280+
["B", 1, 100, -2],
281+
["A", 2, 100, -2],
282+
["B", 2, 200, -4],
283+
]
284+
df = pd.DataFrame(data=data, columns=["index", "col", "value", "extra"])
285+
result = df.pivot_table(values="value", index=["index", "value"], columns="col")
286+
nan = np.nan
287+
e_data = [
288+
[50.0, nan],
289+
[nan, 100.0],
290+
[100.0, nan],
291+
[nan, 200.0],
292+
]
293+
e_index = MultiIndex.from_arrays(
294+
arrays=[["A", "A", "B", "B"], [50, 100, 100, 200]], names=["index", "value"]
295+
)
296+
e_cols = Index(data=[1, 2], name="col")
297+
expected = pd.DataFrame(data=e_data, index=e_index, columns=e_cols)
298+
tm.assert_frame_equal(left=result, right=expected)

0 commit comments

Comments
 (0)