UPDATE: sử dụng Pandas 0.22.0
Mới hơn phiên bản Pandas có phương pháp mới 'DataFrame.isna()' và 'DataFrame.notna()'
In [71]: df
Out[71]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [72]: df.isna().any()
Out[72]:
a True
b True
c False
dtype: bool
như danh sách các cột:
In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']
để chọn các cột (có chứa ít nhất một NaN
giá trị):
In [73]: df.loc[:, df.isna().any()]
Out[73]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
câu trả lời OLD:
Cố gắng sử dụng isnull():
In [97]: df
Out[97]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [98]: pd.isnull(df).sum() > 0
Out[98]:
a True
b True
c False
dtype: bool
hoặc như @root đề xuất phiên bản rõ ràng hơn:
In [5]: df.isnull().any()
Out[5]:
a True
b True
c False
dtype: bool
In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']
để chọn một tập hợp con - tất cả các cột có chứa ít nhất một NaN
giá trị:
In [31]: df.loc[:, df.isnull().any()]
Out[31]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
Cảm ơn bạn đã trả lời! Tôi đang tìm kiếm để có được một danh sách các tên cột (tôi cập nhật câu hỏi của tôi cho phù hợp), bạn có biết làm thế nào? – denvar
đã có câu trả lời ln [7] ở trên –
Xin chào @AzizAlto, có câu trả lời đã được cập nhật sau khi tôi cập nhật câu hỏi của riêng mình. – denvar