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

INSTALLED VERSIONS ------------------ commit : 1a2e300170efc08cb509a0b4ff6248f8d55ae777 python : 3.9.13.final.0 python-bits : 64 OS : Windows OS-release : 10 Version : 10.0.22621 machine : AMD64 processor : AMD64 Family 25 Model 33 Stepping 0, AuthenticAMD byteorder : little LC_ALL : None LANG : None LOCALE : English_Netherlands.1252 pandas : 2.0.0rc0 numpy : 1.21.1 pytz : 2021.1 dateutil : 2.8.2 setuptools : 57.0.0 pip : 23.0.1 Cython : None pytest : None hypothesis : None sphinx : None blosc : None feather : None xlsxwriter : None lxml.etree : None html5lib : None pymysql : None psycopg2 : None jinja2 : None IPython : None pandas_datareader: None bs4 : None bottleneck : None brotli : None fastparquet : None fsspec : None gcsfs : None matplotlib : None numba : None numexpr : None odfpy : None openpyxl : None pandas_gbq : None pyarrow : None pyreadstat : None pyxlsb : None s3fs : None scipy : None snappy : None sqlalchemy : None tables : None tabulate : None xarray : None xlrd : None zstandard : None tzdata : None qtpy : None pyqt5 : None

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.