このスレッドで受け入れられた空の定義は、ゼロ行のみのデータフレームであるようです。ただし、行と列がゼロの空のデータフレームと、行と列が少なくとも1つある空のデータフレームには違いがあります。いずれの場合も、インデックスの長さは0であり、次に示すようにempty = Trueです。
例1:0行0列の空のデータフレーム
In [1]: import pandas as pd
df1 = pd.DataFrame()
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len(df1.index)
Out[2]: 0
In [3]: df1.empty
Out[3]: True
例2:0行1列以上の空のデータフレーム
In [4]: df2 = pd.DataFrame({'AA' : [], 'BB' : []})
df2
Out[4]: Empty DataFrame
Columns: [AA, BB]
Index: []
In [5]: len(df2.index)
Out[5]: 0
In [6]: df2.empty
Out[6]: True
ヘッダーとデータが空のデータフレーム、またはデータが空のデータフレームを区別する1つの方法は、列インデックスの長さをテストすることです。最初にロードされたデータフレームはゼロ列を返し、2番目のデータフレームは空の列の数を返します。
In [7]: len(df1.columns)
Out[7]: 0
In [8]: len(df2.columns)
Out[8]: 2