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

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

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]

sensor1sensor2sensor3sensor4sensor5sensor6
thời gian
06:00:0014.3 13.7 14.2 14.3 13.5 13.6
06:15:0014.5 14.5 14.0 15.0 14.5 14.7
06:30:0014.6 15.1 14.8 15.3 14.0 14.2
06:45:0014.8 14.5 15.6 15.2 14.7 14.6
07:00:0015.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 gian
06:00:0013.933333
06:15:0014.533333
06:30:0014.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

sensor1sensor2sensor3sensor4sensor5sensor6
thời gian
06:00:0014.3 13.7 14.2 14.3 13.5 13.6
06:15:0014.5 14.5 14.0 15.0 14.5 14.7
06:30:0014.6 15.1 14.8 15.3 14.0 14.2
06:45:0014.8 14.5 15.6 15.2 14.7 14.6
07:00:0015.0 14.9 15.7 15.6 14.0 15.3
07:15:0015.2 15.2 14.6 15.3 15.5 14.9
07:30:0015.4 15.3 15.6 15.6 14.7 15.1
07:45:0015.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 ba
018 -27
114 -23
228 -21
36 -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 <0,8', chúng tôi nhận được dataFrame df_bool, trong đó khoảng 20 % giá trị sẽ đúng:

>>> 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')
8

sensor1sensor2sensor3sensor4sensor5sensor6
thời gian
06:00:00SaiĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYSai
06:15:00SaiĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYSaiĐÚNG VẬY
06:30:00SaiĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYĐÚNG VẬY
06:45:00ĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYSai
07:00:00ĐÚNG VẬYSaiĐÚNG VẬYĐÚNG VẬYĐÚNG VẬYSai

ĐÚNG VẬY

>>> 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')
9

sensor1sensor2sensor3sensor4sensor5sensor6
thời gian
06:00:00Sai13.7 14.2 14.3 13.5 Sai
06:15:00Sai14.5 14.0 15.0 Sai14.7
06:30:00Sai15.1 14.8 15.3 14.0 14.2
06:45:0014.8 14.5 15.6 15.2 14.7 Sai
07:00:0015.0 Sai15.7 15.6 14.0 Sai
07:15:0015.2 15.2 14.6 15.3 15.5 14.9
07:30:00Sai15.3 15.6 Sai14.7 15.1
07:45:0015.5 14.8 15.4 15.5 14.6 14.9
08:00:0015.7 15.6 15.9 16.2 15.4 15.4
08:15:0015.9 15.8 Sai16.9 Sai16.2

ĐÚNG VẬY

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

Cuối cùng, chúng tôi có mọi thứ Toghether để tạo ra DataFrame của mình với các phép đo bị phân hủy:

Nan

Đào tạo Python sống

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

>>> 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')
0

sensor1sensor2sensor3sensor4sensor5sensor6
thời gian
07:15:0015.2 15.2 14.6 15.3 15.5 14.9
07:45:0015.5 14.8 15.4 15.5 14.6 14.9
08:00:0015.7 15.6 15.9 16.2 15.4 15.4
08:30:0016.1 15.7 16.1 15.9 14.9 15.2
09:15:0017.1 17.5 17.5 17.3 16.6 16.8
09:45:0018.4 19.0 19.0 19.4 18.4 18.3
10:30:0020.4 19.4 20.0 21.0 20.2 19.8
12:15:0023.8 23.7 24.8 25.1 22.2 22.4
13:30:0022.9 21.9 22.9 24.3 22.9 23.0
14:15:0022.3 22.9 21.9 22.3 22.5 21.1
16:00:0021.1 21.6 20.7 20.6 19.9 21.4
17:45:0019.9 20.4 19.4 21.1 20.0 20.5
18:30:0019.5 19.1 19.2 19.7 18.3 18.3

Ghi danh ở đây

>>> 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')
1

thời gian
06:00:00
06:15:00
06:30:00
06:45:00
07:00:00

Sử dụng Dropna trên DataFrame

>>> 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')
2

sensor1sensor2sensor3sensor4sensor5sensor6
thời gian
06:00:00Sai13.7 14.2 14.3 13.5 Sai
06:15:00Sai14.5 14.0 15.0 Sai14.7
06:30:00Sai15.1 14.8 15.3 14.0 14.2
06:45:0014.8 14.5 15.6 15.2 14.7 Sai
07:00:0015.0 Sai15.7 15.6 14.0 Sai
07:15:0015.2 15.2 14.6 15.3 15.5 14.9
07:30:00Sai15.3 15.6 Sai14.7 15.1

ĐÚNG VẬY

>>> 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')
3

Cuối cùng, chúng tôi có mọi thứ Toghether để tạo ra DataFrame của mình với các phép đo bị phân hủy:
thời gian
06:00:0013.925000
06:15:0014.550000
06:30:0014.680000
06:45:0014.960000
07:00:0015.075000
07:15:0015.116667

ĐÚNG VẬY

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

Cuối cùng, chúng tôi có mọi thứ Toghether để tạo ra DataFrame của mình với các phép đo bị phân hủy:

Nan

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

Bạn có thể làm df [df [0] .str.contains ('a').Thay vì df [df [0] .str.contains ('a') == true] - erfan.Ngày 30 tháng 6 năm 2019 lúc 11:25 ..
Xin lỗi, tôi có nghĩa là df [df [0] .str.contains ('a', na = false) - erfan.Ngày 30 tháng 6 năm 2019 lúc 11:29 ..
@Erfan: hoặc bộ lọc bài với.notna ().- Willem van onsem.Ngày 30 tháng 6 năm 2019 lúc 11:30 ..

Làm cách nào để sửa Nan trong Python?

Chúng ta có thể thay thế các giá trị NAN bằng 0 để loại bỏ các giá trị NAN.Điều này được thực hiện bằng cách sử dụng hàm fillna ().Hàm này sẽ kiểm tra các giá trị NAN trong các cột DataFrame và điền vào giá trị đã cho.replace NaN values with 0 to get rid of NaN values. This is done by using fillna() function. This function will check the NaN values in the dataframe columns and fill the given value.

Tại sao tôi lại nhận được Nan ở Python?

Nan có nghĩa là không phải là một số, điều này là do bên trong chức năng khối lập phương của bạn, bạn không gọi hàm vuông, nhưng nhận được nội dung của nó.Thay đổi trả về x * vuông;với return x * vuông (x);Và nó nên hoạt động.inside your cube function, you're not calling the square function, but getting it's contents. Change return x * square; with return x * square(x); and it should work.

Làm cách nào để kiểm tra xem một chuỗi là NAN trong Python?

Phương thức math.isnan () kiểm tra xem một giá trị là nan (không phải là số), hoặc không.Phương thức này trả về đúng nếu giá trị được chỉ định là NAN, nếu không nó sẽ trả về sai.math. isnan() method checks whether a value is NaN (Not a Number), or not. This method returns True if the specified value is a NaN, otherwise it returns False.