Как убрать строки в пандах с определенным условием - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь удалить строки из переменной pandas.

Для этого я создал функцию, которая анализирует 2 столбца в моей таблице панд. Когда эта функция распознает, что ячейка пуста, функция должна удалить строку.

Я попробовал следующий код:

def removeNaN(df):

    row,colum=df.shape

    for index in range(0,row):

        if df.Signal.iloc[index]==np.NaN or df.results.iloc[index]==np.NaN:

            df.drop(df.index[index],inplace=True)



    return df 

Размер моего исходного файла [37057 строк x 11 столбцов]:

      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...

После помещения переменной в мою функцию я получаю точно такую ​​же таблицу [37057 строк x 11 столбцов]:

      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...

Я ожидаю такого результата: [????? строки x 11 столбцов]:

      Unnamed: 0      created_at    ...           Signal   results
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...

Может ли кто-нибудь помочь мне определить мою ошибку?

Ответы [ 3 ]

1 голос
/ 03 мая 2019

Самый простой способ выполнить то, что вы хотите, будет:

df.drop(df[df.Signal.isnull() | df.results.isnull()].index, inplace=True)
1 голос
/ 03 мая 2019

Если я правильно понимаю, вы хотите удалить строки, когда хотя бы один из двух определенных столбцов равен None / Null.

В Пандах это просто, есть метод dropna

df.dropna(subset=["Signal", "results"], inplace=True)

Подмножество здесь - это столбцы, которые вы хотите рассмотреть.

0 голосов
/ 03 мая 2019

Простой и легкий способ:

df.dropna (подмножество = [ 'Signal', 'Результаты'], ось = 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...