Để xem liệu DataFrame có trống không, tôi lập luận rằng người ta nên kiểm tra độ dài của chỉ mục cột của DataFrame:length of a dataframe's columns index:
if len[df.columns] == 0: 1
Reason:
Theo API tham chiếu Pandas, có một sự khác biệt giữa:
- một khung dữ liệu trống với 0 hàng và 0 cột
- một khung dữ liệu trống với các hàng chứa
2 do đó ít nhất 1 cộtIn [1]: import pandas as pd df1 = pd.DataFrame[] df1 Out[1]: Empty DataFrame Columns: [] Index: [] In [2]: len[df1.index] # or len[df1] Out[2]: 0 In [3]: df1.empty Out[3]: True
Có thể cho rằng, họ không giống nhau. Các câu trả lời khác không chính xác trong đó
In [1]: import pandas as pd
df1 = pd.DataFrame[]
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len[df1.index] # or len[df1]
Out[2]: 0
In [3]: df1.empty
Out[3]: True
3, In [1]: import pandas as pd
df1 = pd.DataFrame[]
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len[df1.index] # or len[df1]
Out[2]: 0
In [3]: df1.empty
Out[3]: True
4 hoặc In [1]: import pandas as pd
df1 = pd.DataFrame[]
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len[df1.index] # or len[df1]
Out[2]: 0
In [3]: df1.empty
Out[3]: True
5 không phân biệt và chỉ số trả lại là 0 và trống là đúng trong cả hai trường hợp.index is 0 and empty is True in both cases.Ví dụ
Ví dụ 1: Một khung dữ liệu trống với 0 hàng và 0 cột
In [1]: import pandas as pd
df1 = pd.DataFrame[]
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len[df1.index] # or len[df1]
Out[2]: 0
In [3]: df1.empty
Out[3]: True
Ví dụ 2: Một khung dữ liệu được đổ thành 0 hàng nhưng vẫn giữ lại các cột
In [1]: import pandas as pd
df1 = pd.DataFrame[]
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len[df1.index] # or len[df1]
Out[2]: 0
In [3]: df1.empty
Out[3]: True
6In [4]: df2 = pd.DataFrame[{'AA' : [1, 2, 3], 'BB' : [11, 22, 33]}]
df2
Out[4]: AA BB
0 1 11
1 2 22
2 3 33
In [5]: df2 = df2[df2['AA'] == 5]
df2
Out[5]: Empty DataFrame
Columns: [AA, BB]
Index: []
In [6]: len[df2.index] # or len[df2]
Out[6]: 0
In [7]: df2.empty
Out[7]: True
Bây giờ, xây dựng trên các ví dụ trước, trong đó chỉ mục là 0 và trống là đúng. Khi đọc độ dài của chỉ mục cột cho DataFrame DF1 được tải đầu tiên, nó sẽ trả về 0 cột để chứng minh rằng nó thực sự trống.length of the columns index for the first loaded dataframe df1, it returns 0 columns to prove that it is indeed empty.
In [8]: len[df1.columns]
Out[8]: 0
In [9]: len[df2.columns]
Out[9]: 2
Quan trọng, trong khi df2 DataFrame thứ hai không chứa dữ liệu, nó không hoàn toàn trống vì nó trả về số lượng cột trống vẫn tồn tại., while the second dataframe df2 contains no data, it is not completely empty because it returns the amount of empty columns that persist.
Tại sao nó quan trọng
Hãy thêm một cột mới vào các khung dữ liệu này để hiểu ý nghĩa:
# As expected, the empty column displays 1 series
In [10]: df1['CC'] = [111, 222, 333]
df1
Out[10]: CC
0 111
1 222
2 333
In [11]: len[df1.columns]
Out[11]: 1
# Note the persisting series with rows containing `NaN` values in df2
In [12]: df2['CC'] = [111, 222, 333]
df2
Out[12]: AA BB CC
0 NaN NaN 111
1 NaN NaN 222
2 NaN NaN 333
In [13]: len[df2.columns]
Out[13]: 3
Rõ ràng là các cột ban đầu trong DF2 đã bề mặt lại. Do đó, thay vào đó, nên đọc độ dài của chỉ mục các cột với
In [1]: import pandas as pd
df1 = pd.DataFrame[]
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len[df1.index] # or len[df1]
Out[2]: 0
In [3]: df1.empty
Out[3]: True
7 để xem liệu dữ liệu có trống không.length of the columns index with In [1]: import pandas as pd
df1 = pd.DataFrame[]
df1
Out[1]: Empty DataFrame
Columns: []
Index: []
In [2]: len[df1.index] # or len[df1]
Out[2]: 0
In [3]: df1.empty
Out[3]: True
7 to see if a dataframe is empty.Giải pháp thực tế
# New dataframe df
In [1]: df = pd.DataFrame[{'AA' : [1, 2, 3], 'BB' : [11, 22, 33]}]
df
Out[1]: AA BB
0 1 11
1 2 22
2 3 33
# This data manipulation approach results in an empty df
# because of a subset of values that are not available [`NaN`]
In [2]: df = df[df['AA'] == 5]
df
Out[2]: Empty DataFrame
Columns: [AA, BB]
Index: []
# NOTE: the df is empty, BUT the columns are persistent
In [3]: len[df.columns]
Out[3]: 2
# And accordingly, the other answers on this page
In [4]: len[df.index] # or len[df]
Out[4]: 0
In [5]: df.empty
Out[5]: True
# SOLUTION: conditionally check for empty columns
In [6]: if len[df.columns] != 0: #