Как сравнить значение "nan" с to_numeri c in pandas - PullRequest
0 голосов
/ 21 января 2020

У меня проблема с pandas lib ... Я использую pandas .to_numeri c, чтобы сравнить столбец со значением, но, когда исходное значение не является "аналогом числа", pd .to_numeri c преобразовать ячейку csv в значение "nan", но я не знаю, как сравнить это значение "nan" с "if" ... В основном, если значение ячейки равно nan, я Мне нужно поймать ячейку в правильном положении, например:

    while counter < len(df): #df is my pandas Dataframe
    if df.values[counter][2].isnull(): #[2] is my column with "possible nan values, but not works!"
        if 0 <= df.values[counter][4] <= 100: #[4] is my column with "number values"
            df.values[counter][2] = df.values[counter][4]
            df.values[counter][1] = df.values[counter][3] #[3] Like column [4]
    counter += 1

По сути, настоящая причина, по которой я должен это сделать, заключается в том, что мой CSV-файл иногда получает «Сдвиг вправо» в некоторых строках!

Заранее спасибо !!

@ Edit 1:

Мой набор данных:


Время | ... | текущий | bt_disable | bt_cpy | bt_health | ...


2561456 | ... | 48945 | Нормальный | 20 | Хорошо | ...

2589749 | ... | 41485 | Нормальный | 21 | Хорошо | ...

2561456 | ... | 48945 | Нормальный | 22 | Хорошо | ...

2561986 | ... | 1 | 48515 | нан | 23 | ...

2569921 | ... | 1 | 49821 | нан | 24 | ...

2561456 | ... | 43253 | 0 | 25 | Хорошо | ...


Две строки в Жирный сместились вправо ... "сдвиг" - это автомат c, у меня нет контроля .. .

to_numeri c строк:

df[BCY] = pd.to_numeric(df[BCY], errors='coerce') #BCY and others is the name of column
df[BCN] = pd.to_numeric(df[BCN], errors='coerce')
df[BPD] = pd.to_numeric(df[BPD], errors='coerce')
df[BHT] = pd.to_numeric(df[BHT], errors='coerce')

Вы можете видеть, что мой исходный файл CSV содержит столбцы в | ... | что я не использую, но, когда я использую to_numeri c в столбце BT_CPY, и строка смещается, значение normal преобразуется в "nan", и мне нужно проверить это nan и если nan == true, мне нужно поймать значение bt_health и поместить в столбец bt_cpy!

1 Ответ

0 голосов
/ 21 января 2020

Я довольно не понял вашего вопроса, но чтобы сравнить значение с "NaN", используйте math.isnan () в условии if. Это работает для меня всегда:)

...