Hướng dẫn python for loop skip nan - python cho vòng lặp bỏ qua nan

Thay vì lặp lại điều này, bạn chỉ có thể sử dụng >>> df[df[0].str.contains('A').notna()] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A').notna()] Int64Index([0, 1, 3], dtype='int64') 4 [pandas-doc] trên cột, như:>>> df[df[0].str.contains('A').notna()] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A').notna()] Int64Index([0, 1, 3], dtype='int64') 4 [pandas-doc] on the column, like:

>>> df 0 0 A 1 FAT 2 NaN 3 TAH >>> df[0].str.contains('A') 0 True 1 True 2 NaN 3 True Name: 0, dtype: object

Sau đó, bạn có thể lọc ví dụ hoặc, lấy các chỉ số:

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64')

Hoặc chúng ta có thể sử dụng >>> df[df[0].str.contains('A').notna()] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A').notna()] Int64Index([0, 1, 3], dtype='int64') 5 thay vì >>> df[df[0].str.contains('A').notna()] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A').notna()] Int64Index([0, 1, 3], dtype='int64') 6:

>>> df[df[0].str.contains('A').notna()] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A').notna()] Int64Index([0, 1, 3], dtype='int64')

hoặc lọc trong >>> df[df[0].str.contains('A').notna()] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A').notna()] Int64Index([0, 1, 3], dtype='int64') 7 như @erfan nói:

>>> df[df[0].str.contains('A', na=False)] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A', na=False)] Int64Index([0, 1, 3], dtype='int64')

Vì vậy, bạn có thể in các giá trị bằng:

for val in df[df[0].str.contains('A') == True][0]: print('A found in {}'.format(val))

Điều này mang lại cho chúng tôi:

>>> for val in df[df[0].str.contains('A') == True][0]: ... print('A found in {}'.format(val)) ... A found in A A found in FAT A found in TAH

Bởi Bernd Klein. Sửa đổi lần cuối: 24 tháng 3 năm 2022.Bernd Klein. Last modified: 24 Mar 2022.

Trên trang này

Giới thiệu

NAN đã được giới thiệu, ít nhất là chính thức, theo tiêu chuẩn của IEEE cho số học nổi (IEEE 754). Đây là một tiêu chuẩn kỹ thuật để tính toán điểm nổi được thiết lập vào năm 1985 - nhiều năm trước khi Python được phát minh, và thậm chí cả thời gian dài hơn cho Pandas được tạo ra - bởi Viện Kỹ sư Điện và Điện tử (IEEE). Nó đã được giới thiệu để giải quyết các vấn đề được tìm thấy trong nhiều triển khai điểm nổi khiến chúng khó sử dụng một cách đáng tin cậy và một cách đáng tin cậy.

Tiêu chuẩn này đã thêm NAN vào các định dạng số học: "Các định dạng số học: Các bộ dữ liệu dấu phẩy động nhị phân và thập phân, bao gồm các số hữu hạn (bao gồm các số không có chữ ký và số dưới mức), tính không đồng nhất và các giá trị 'không phải là số' (NAN) đặc biệt (NAN) "

'nan' trong Python

Python cũng biết các giá trị NAN. Chúng ta có thể tạo nó bằng "float":

n1 = float("nan") n2 = float("Nan") n3 = float("NaN") n4 = float("NAN") print(n1, n2, n3, n4)

OUTPUT:

"NAN" cũng là một phần của mô -đun toán học kể từ Python 3.5:

import math n1 = math.nan print(n1) print(math.isnan(n1))

OUTPUT:

Cảnh báo: Không thực hiện so sánh giữa các giá trị "NAN" hoặc các giá trị "NAN" và số thông thường. Một lý luận đơn giản hoặc đơn giản là thế này: hai điều "không phải là một số", vì vậy chúng có thể là bất cứ điều gì nhưng hầu hết có lẽ không giống nhau. Trên hết, không có cách nào để đặt hàng nans:

print(n1 == n2) print(n1 == 0) print(n1 == 100) print(n2 < 0)

OUTPUT:

Nan trong gấu trúc

Ví dụ mà không có nans

Trước khi chúng tôi làm việc với dữ liệu NAN, chúng tôi sẽ xử lý một tệp mà không có bất kỳ giá trị NAN nào. Nhiệt độ tệp dữ liệu.CSV chứa dữ liệu nhiệt độ của sáu cảm biến được thực hiện cứ sau 15 minut trong khoảng thời gian từ 6:00 đến 19,15 giờ.

Đọc trong tệp dữ liệu có thể được thực hiện với chức năng read_csv:

import pandas as pd df = pd.read_csv("../data1/temperatures.csv", sep=";", decimal=",", index_col=0) df[:5]

sensor1sensor2sensor3sensor4sensor5sensor6thời gian06:00:0006:15:0006:30:0006:45:0007:00:00
14.3 13.7 14.2 14.3 13.5 13.6
14.5 14.5 14.0 15.0 14.5 14.7
14.6 15.1 14.8 15.3 14.0 14.2
14.8 14.5 15.6 15.2 14.7 14.6
15.0 14.9 15.7 15.6 14.0 15.3

Đào tạo Python sống

OUTPUT:

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 0

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 1

OUTPUT:

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 2

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 3

OUTPUT:

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 4

Các khóa học trực tuyến sắp tới

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 5

nhiệt độthời gian06:00:0006:15:0006:30:00
13.933333
14.533333
14.666667

Đào tạo Python sống

Các khóa học trực tuyến sắp tới

Ghi danh ở đây

Làm thế nào để bạn bỏ qua Nan trong Python?

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 6

sensor1sensor2sensor3sensor4sensor5sensor6thời gian06:00:0006:15:0006:30:0006:45:0007:00:0007:15:0007:30:0007:45:00
14.3 13.7 14.2 14.3 13.5 13.6
14.5 14.5 14.0 15.0 14.5 14.7
14.6 15.1 14.8 15.3 14.0 14.2
14.8 14.5 15.6 15.2 14.7 14.6
15.0 14.9 15.7 15.6 14.0 15.3
15.2 15.2 14.6 15.3 15.5 14.9
15.4 15.3 15.6 15.6 14.7 15.1
15.5 14.8 15.4 15.5 14.6 14.9

Đào tạo Python sống

Trước khi chúng tôi tiếp tục với nhiệm vụ của mình, chúng tôi sẽ chứng minh cách làm việc với một số ví dụ đơn giản:

s = pd.series (phạm vi (5)) s.where (s> 0)

>>> df[df[0].str.contains('A') == True] 0 0 A 1 FAT 3 TAH >>> df.index[df[0].str.contains('A') == True] Int64Index([0, 1, 3], dtype='int64') 7

FooQuán ba0123
18 -27
14 -23
28 -21
6 -23

Đối với nhiệm vụ của chúng tôi, chúng tôi cần tạo DataFrame 'NAN_DF', bao gồm các giá trị NAN hoàn toàn và có hình dạng giống như DataFrame 'TEMP_DF của chúng tôi. Chúng tôi sẽ sử dụng DataFrame này trong 'WHERE'. Chúng tôi cũng cần một khung dữ liệu với các điều kiện "df_bool" là giá trị thực. Đối với mục đích này, chúng tôi sẽ tạo một khung dữ liệu với các giá trị ngẫu nhiên trong khoảng từ 0 đến 1 và bằng cách áp dụng 'Random_df

Chủ đề