Удалить строку, содержащую строгое и конкретное значение / int / string? - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу удалить каждую строку, содержащую Copy 1 в столбце copy_nb:

Я попробовал простую и легкую функцию панд Series.str.contains примерно так:

df=df[~df.copy_nb.str.contains("Copy 1", na=False)]

К сожалению, он удаляет столбцы, которые содержат Copy 1, но также Copy 10, Copy 11 и т. Д.

Вот пример фрейма данных, который я хочу очистить:

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Попробуйте следующее:

df[~df['copy_nb'].fillna('').str.contains('Copy 1')]
0 голосов
/ 26 апреля 2019

Вы можете выбрать строки, в которых столбец copy_nb не равен значению «Копировать 1», как в примере ниже:

import numpy as np
import pandas as pd

df = pd.DataFrame({
    "copy_nb": [np.nan, np.nan, "Copy 1", "Copy 2"],
    "other_column": [1, 2, 3, 4]
})

print(df)

df_copy1_removed = df.loc[df.copy_nb != "Copy 1", :]  # Here the selection happens

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