Pandas version checks
-
[X] I have checked that this issue has not already been reported.
-
[X] I have confirmed this bug exists on the latest version of pandas.
-
[X] I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
import pandas as pd
from pandas.testing import assert_frame_equal
df1 = pd.DataFrame()
df2 = pd.DataFrame(columns=[])
assert_frame_equal(df1, df2) # AssertionError: DataFrame.columns are different
Issue Description
The columns are not set correctly when the columns argument is an empty array.
Expected Behavior
I'm expecting no AssertionError on the reproducable example, the same as with Pandas 1.5.3.
Installed Versions
Comment From: JeremyVriens
It has been introduced with this pull request: https://github.com/pandas-dev/pandas/pull/49637
Comment From: mroeschke
This is an intended change described in https://pandas.pydata.org/docs/dev/whatsnew/v2.0.0.html#empty-dataframes-series-will-now-default-to-have-a-rangeindex
Comment From: rhshadrach
@JeremyVriens - for understanding behavior it may be helpful to consider the following four examples.
``` df1 = pd.DataFrame(columns=[1]) df2 = pd.DataFrame(columns=[]) print(df1.columns)
Index([1], dtype='int64')
print(df2.columns)
Index([], dtype='object')
df3 = pd.DataFrame([[1]]) df4 = pd.DataFrame() print(df3.columns)
RangeIndex(start=0, stop=1, step=1)
print(df4.columns)
RangeIndex(start=0, stop=0, step=1)
Comment From: rhshadrach
Closing - @JeremyVriens if you think something is being overlooked, please feel free to comment here and we can reopen.