Фильтрация строк из DataFrame с несколькими заголовками по значениям из столбца - PullRequest
0 голосов
/ 30 мая 2018

Я создаю скрипт Python для следующих действий:

  1. Список CSV в каталоге

  2. Считывание одного файла CSV в DataFrame -> «данные» (строки 2 (имя параметра) и 3 (единица параметра) определены как заголовок).

  3. Сохранять строки только в том случае, если значение в столбцах «TMOD1», «TMOD2»,«TMOD3» и «TMOD4» равны 0 (если один не равен 0, должна пройти вся строка)

  4. Удалить все столбцы (-> параметры) с помощью единицы «бит»

  5. Удалить все строки с более чем, например, 10 значениями "NaN"

  6. Добавить отфильтрованные данные DataFrame к данным DataFrame "result"

  7. Повторение шагов 2-7 для всех файлов CSV

  8. Сохранение результирующего "результата" DataFrame в виде нового файла CSV

Я застрял в том, как реализовать шаги 3 и 4, все остальное работает нормально.

Я попробовал следующее для шага 3:

data = data[(data.TMOD1 == 0) & (data.TMOD2 == 0) & (data.TMOD3 == 0) & (data.TMOD4 == 0)]

И следующее для шага 4:

data.drop(labels='bit', axis=1, level=1, inplace=True)

Шаг 4 отлично работает при выходеВыделение шага 3 и использование многострочной строки DataFrame.

Однако шаг 3 работает только при переключении на одну строку заголовка DataFrame - в этом случае шаг 4, очевидно, не будет работать.

Наверное, я ошибся с вызовом правильного уровня заголовка.

1 Ответ

0 голосов
/ 31 мая 2018
data = data[(data['TMOD1']['bit'] == 0) & (data['TMOD2']['bit'] == 0) & (data['TMOD3']['bit'] == 0) & (data['TMOD4']['bit'] == 0)]

Кажется, работает.Понятия не имею, почему этого не произошло, когда я попробовал вчера.

Есть ли возможность оставить второй ярлык ("бит") пустым?Иногда метки различаются (например, «бит», «биты» или «без единиц») в необработанных данных.

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