Skip to content

Commit 8ce6ab8

Browse files
authored
fix for duplicate columns (#1099)
1 parent 5dfc402 commit 8ce6ab8

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

janitor/functions/pivot.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,8 @@ def _computations_pivot_longer(
606606
name: extract_array(df[name], extract_numpy=True) for name in index
607607
}
608608

609+
if len(column_names) != len(set(column_names)):
610+
column_names = pd.unique(column_names)
609611
df = df.loc[:, column_names]
610612

611613
len_index = len(df)

tests/functions/test_pivot_longer.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,3 +1156,22 @@ def test_names_transform_numeric():
11561156
).reset_index()
11571157

11581158
assert_frame_equal(actual, expected)
1159+
1160+
1161+
def test_duplicated_columns():
1162+
"""Test output for duplicated columns."""
1163+
rows = [["credit", 1, 1, 2, 3]]
1164+
columns = ["Type", "amount", "active", "amount", "active"]
1165+
1166+
df = pd.DataFrame(rows, columns=columns)
1167+
df = df.set_index("Type")
1168+
1169+
actual = pd.DataFrame(
1170+
{"amount": [1, 2], "active": [1, 3]},
1171+
index=pd.Index(["credit", "credit"], name="Type"),
1172+
)
1173+
expected = df.pivot_longer(
1174+
names_to=".value", names_pattern="(.+)", ignore_index=False
1175+
)
1176+
1177+
assert_frame_equal(actual, expected)

0 commit comments

Comments
 (0)