TST: add validation checks on levels keyword from pd.concat · Issue #46653 · pandas-dev/pandas (original) (raw)
Pandas version checks
- I have checked that this issue has not already been reported.
- I have confirmed this bug exists on the latest version of pandas.
- I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
df1 = pd.DataFrame({"A": [1]}, index=["x"]) df2 = pd.DataFrame({"A": [1]}, index=["y"]) pd.concat([df1, df2], keys=["x", "y"], levels=[["x", "y", "y"]]) A x x 1 y y 1
```python
df1 = pd.DataFrame({"A": [1]}, index=["x"]) df2 = pd.DataFrame({"A": [1]}, index=["y"]) pd.concat([df1, df2], levels=[["x", "y"]]) A x 1 y 1
Issue Description
First, we should raise when levels duplicated. Second, when levels specified and keys not given, then we should also raise since this is unreasonable. (DOC only mentions infering levels from keys but not infering keys from levels)
Expected Behavior
df1 = pd.DataFrame({"A": [1]}, index=["x"]) df2 = pd.DataFrame({"A": [1]}, index=["y"]) pd.concat([df1, df2], keys=["x", "y"], levels=[["x", "y", "y"]]) ValueError: Level values not unique: ['x', 'y', 'y']
df1 = pd.DataFrame({"A": [1]}, index=["x"]) df2 = pd.DataFrame({"A": [1]}, index=["y"]) pd.concat([df1, df2], levels=[["x", "y"]]) ValueError: levels supported only when keys not None
Installed Versions
1.4.1