Hướng dẫn how do you remove nan values from a column in python? - làm cách nào để xóa các giá trị nan khỏi một cột trong python?

Cách thả các hàng của gấu trúc DataFrame có giá trị trong một cột nhất định là NAN

Đây là một câu hỏi cũ đã bị đánh đến chết nhưng tôi tin rằng có một số thông tin hữu ích hơn được xuất hiện trên chủ đề này. Đọc tiếp nếu bạn đang tìm kiếm câu trả lời cho bất kỳ câu hỏi nào sau đây:

  • Tôi có thể thả hàng nếu bất kỳ giá trị nào của nó có nans không? Thế còn tất cả chúng là Nan?
  • Tôi chỉ có thể nhìn vào Nans trong các cột cụ thể khi thả hàng?
  • Tôi có thể thả hàng với số lượng giá trị NAN cụ thể không?
  • Làm cách nào để thả cột thay vì hàng?
  • Tôi đã thử tất cả các tùy chọn ở trên nhưng DataFrame của tôi sẽ không cập nhật!

DataFrame.dropna: Sử dụng và ví dụ

Người ta đã nói rằng

# Removes all but the last row since there are no NaNs 
df.dropna()

     A    B    C
3  4.0  3.0  3.0

# Removes the first row only
df.dropna(how='all')

     A    B    C
1  2.0  NaN  NaN
2  3.0  2.0  NaN
3  4.0  3.0  3.0
0 là phương pháp kinh điển để loại bỏ Nans từ DataFrames, nhưng không có gì giống như một vài tín hiệu trực quan để giúp đỡ trên đường đi.

# Setup
df = pd.DataFrame({
    'A': [np.nan, 2, 3, 4],  
    'B': [np.nan, np.nan, 2, 3], 
    'C': [np.nan]*3 + [3]}) 

df                      
     A    B    C
0  NaN  NaN  NaN
1  2.0  NaN  NaN
2  3.0  2.0  NaN
3  4.0  3.0  3.0

Dưới đây là một chi tiết về các lập luận quan trọng nhất và cách chúng hoạt động, được sắp xếp theo định dạng Câu hỏi thường gặp.


Tôi có thể thả hàng nếu bất kỳ giá trị nào của nó có nans không? Thế còn tất cả chúng là Nan?

Tôi chỉ có thể nhìn vào Nans trong các cột cụ thể khi thả hàng?

  • Tôi có thể thả hàng với số lượng giá trị NAN cụ thể không?
  • Làm cách nào để thả cột thay vì hàng?

Tôi đã thử tất cả các tùy chọn ở trên nhưng DataFrame của tôi sẽ không cập nhật!

DataFrame.dropna: Sử dụng và ví dụ

Người ta đã nói rằng

# Removes all but the last row since there are no NaNs 
df.dropna()

     A    B    C
3  4.0  3.0  3.0

# Removes the first row only
df.dropna(how='all')

     A    B    C
1  2.0  NaN  NaN
2  3.0  2.0  NaN
3  4.0  3.0  3.0
0 là phương pháp kinh điển để loại bỏ Nans từ DataFrames, nhưng không có gì giống như một vài tín hiệu trực quan để giúp đỡ trên đường đi.
If you just want to see which rows are null (IOW, if you want a boolean mask of rows), use
# Removes all but the last row since there are no NaNs 
df.dropna()

     A    B    C
3  4.0  3.0  3.0

# Removes the first row only
df.dropna(how='all')

     A    B    C
1  2.0  NaN  NaN
2  3.0  2.0  NaN
3  4.0  3.0  3.0
4:

df.isna()

       A      B      C
0   True   True   True
1  False   True   True
2  False  False   True
3  False  False  False

df.isna().any(axis=1)

0     True
1     True
2     True
3    False
dtype: bool

Dưới đây là một chi tiết về các lập luận quan trọng nhất và cách chúng hoạt động, được sắp xếp theo định dạng Câu hỏi thường gặp.


Tôi chỉ có thể nhìn vào Nans trong các cột cụ thể khi thả hàng?

Tôi có thể thả hàng với số lượng giá trị NAN cụ thể không?

Làm cách nào để thả cột thay vì hàng?

# Drop all rows with NaNs in A
df.dropna(subset=['A'])

     A    B    C
1  2.0  NaN  NaN
2  3.0  2.0  NaN
3  4.0  3.0  3.0

# Drop all rows with NaNs in A OR B
df.dropna(subset=['A', 'B'])

     A    B    C
2  3.0  2.0  NaN
3  4.0  3.0  3.0

Tôi có thể thả hàng với số lượng giá trị NAN cụ thể không?

Làm cách nào để thả cột thay vì hàng?

df.dropna(thresh=1)  

     A    B    C
1  2.0  NaN  NaN
2  3.0  2.0  NaN
3  4.0  3.0  3.0

df.dropna(thresh=2)

     A    B    C
2  3.0  2.0  NaN
3  4.0  3.0  3.0

df.dropna(thresh=3)

     A    B    C
3  4.0  3.0  3.0

Tôi đã thử tất cả các tùy chọn ở trên nhưng DataFrame của tôi sẽ không cập nhật!

DataFrame.dropna: Sử dụng và ví dụ

required_min_null_values_to_drop = 2 # drop rows with at least 2 NaN
df.dropna(thresh=df.shape[1] - required_min_null_values_to_drop + 1)

     A    B    C
2  3.0  2.0  NaN
3  4.0  3.0  3.0

Làm cách nào để thả cột thay vì hàng?

Tôi đã thử tất cả các tùy chọn ở trên nhưng DataFrame của tôi sẽ không cập nhật!

DataFrame.dropna: Sử dụng và ví dụ

df.dropna()

     A    B    C
3  4.0  3.0  3.0

# All columns have rows, so the result is empty.
df.dropna(axis=1)

Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]

# Here's a different example requiring the column to have all NaN rows
# to be dropped. In this case no columns satisfy the condition.
df.dropna(axis=1, how='all')

     A    B    C
0  NaN  NaN  NaN
1  2.0  NaN  NaN
2  3.0  2.0  NaN
3  4.0  3.0  3.0

# Here's a different example requiring a column to have at least 2 NON-NULL
# values. Column C has less than 2 NON-NULL values, so it should be dropped.
df.dropna(axis=1, thresh=2)

     A    B
0  NaN  NaN
1  2.0  NaN
2  3.0  2.0
3  4.0  3.0

Tôi đã thử tất cả các tùy chọn ở trên nhưng DataFrame của tôi sẽ không cập nhật!

DataFrame.dropna: Sử dụng và ví dụ

df.dropna(...) # wrong
df.dropna(..., inplace=True) # right, but not recommended
df = df.dropna(...) # right

Người ta đã nói rằng # Removes all but the last row since there are no NaNs df.dropna() A B C 3 4.0 3.0 3.0 # Removes the first row only df.dropna(how='all') A B C 1 2.0 NaN NaN 2 3.0 2.0 NaN 3 4.0 3.0 3.0 0 là phương pháp kinh điển để loại bỏ Nans từ DataFrames, nhưng không có gì giống như một vài tín hiệu trực quan để giúp đỡ trên đường đi.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html

DataFrame.dropna(
    self, axis=0, how='any', thresh=None, subset=None, inplace=False)

Hướng dẫn how do you remove nan values from a column in python? - làm cách nào để xóa các giá trị nan khỏi một cột trong python?