Удалить строки, которые не содержат строки в значении, используя панды - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу использовать python pandas для удаления строк в электронной таблице, которые не содержат «CAT» в столбце «Оборудование».Вот что у меня есть:

import pandas as pd
import openpyxl
import warnings
import xlrd

warnings.filterwarnings("ignore")

file_name = input("Enter File Name: ")
df = pd.read_csv(file_name)


for i in range(len(df["Equipment"])):
    if "CAT" in df["Equipment"][i]:
        print (df["Equipment"][i])
    else:
        df.drop([i])

df.to_excel("new_mp.xlsx")

Сценарий выводит правильные значения в терминале, но не удаляет строки в новой электронной таблице "new_mp.xlsx".Может ли кто-нибудь указать мне правильное направление?

Пример данных:

Equipment
CAT 259B3 1818 OE Skid Steer 2011 CAT
T-14 Towmaster Trailer 3124 OE Trailer 2008
CAT 938M Loader RPO RENTAL 2017 CAT 938M
Rental Water Truck 55571 Rental Water Truck international water truck

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вам не нужен цикл здесь;Вы можете сделать это с помощью str.contains:

v = df[df["Equipment"].str.contains('CAT')]
print(v)
                                  Equipment
0     CAT 259B3 1818 OE Skid Steer 2011 CAT
2  CAT 938M Loader RPO RENTAL 2017 CAT 938M

Или используйте query с engine='python':

v = df.query('Equipment.str.contains("CAT")', engine='python')
print(v)
                                  Equipment
0     CAT 259B3 1818 OE Skid Steer 2011 CAT
2  CAT 938M Loader RPO RENTAL 2017 CAT 938M

Наконец, запишите на диск:

v.to_excel("new_mp.xlsx")
0 голосов
/ 14 декабря 2018

Вы можете использовать это для фильтрации строк.

df[df['Equipment'].apply(lambda x: 'CAT' in x)].to_excel("new_mp.xlsx")

Редактировать:

Хорошо, позвольте мне объяснить это наизнанку:

lambda x: 'CAT' in x принимает в качестве входных данных x и возвращает True, если 'CAT' находится в x.

Теперь метод df['Equipment'].apply будет вызывать функцию lambda, упомянутую выше, для каждого значения ряда.Результатом будет логический массив, который затем передается в df как логическая маска.

Надеюсь, я не переусердствовал.

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