Панды: Удалить строку, если ячейка содержит определенный текст - PullRequest
0 голосов
/ 05 июля 2018

этот код в пандах не работает. Я хочу, чтобы он удалил строку, если в столбце содержится какой-либо из предоставленных текста / чисел. В настоящее время я могу заставить его работать, только если ячейка соответствует точному тексту, передаваемому в моем коде ... так как в нем удаляются только те ячейки, которые говорят Fin * не финансы или финны ...

df2 = df[df.Team != 'Fin*']

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Вы можете использовать startswith

df[~df.Team.str.startswith('Fin')]

или

df[~df.Team.str.contains('Fin')]
0 голосов
/ 05 июля 2018
import pandas as pd
df = pd.DataFrame(dict(A=[1,2,3,4], C=["abc","def","abcdef", "lmn"]))

df:

    A   C
0   1   abc
1   2   def
2   3   abcdef
3   4   lmn

df[df.C.str.contains("abc") == False]

ИЛИ, как предложено @ RafaelC

df[~df.C.str.contains("abc")]

Выход:

    A   C
1   2   def
3   4   lmn
0 голосов
/ 05 июля 2018

Вам нужны регулярные выражения для этой операции. Вот синтетический фрейм данных:

df = pd.DataFrame({'Team': ['Finance', 'Finally', 'Foo']})

Вот фрейм данных, у которого (~) нет финов:

df[~df.Team.str.match('Fin*')]
#  Team
#2  Foo

Если вы уверены, что интересующая строка всегда начинается с Fin, вы можете использовать более мягкий метод:

df[~df.Team.str.startswith('Fin')]
#  Team
#2  Foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...