Python удалить из столбца даты строка содержит строку - PullRequest
0 голосов
/ 02 марта 2019

Я присоединился к двум фреймам данных: один содержит годовую дату, а другой создан с использованием диапазона дат для месячной даты.
После объединения двух фреймов данных есть несколько повторяющихся значений даты, для которых я назначил суффикс «_dup».
СейчасКак я могу удалить строки, содержащие значения _dup.Мой фрейм данных выглядит следующим образом:

enter image description here

Теперь я использовал следующий код для удаления / удаления строки даты, содержащей '_dup'

for i in range (117):
if df5.iloc[i,0].str.contains ('_dup'):
    del df5.loc[i,0]

Я получаю ошибку:


AttributeError                            Traceback (most recent call last)
<ipython-input-171-ae80d413249e> in <module>()
      1 for i in range (117):
----> 2     if df5.iloc[i,0].str.contains ('_dup'):
      3         del df5.loc[i,0]

AttributeError: 'str' object has no attribute 'str'

Я также попробовал код:

df5[~df5.index.str.contains("_dup")]

Выдает ошибку, которая:

AttributeError: Can only use .str accessor with string values (i.e. inferred_type is 'string', 'unicode' or 'mixed')`

1 Ответ

0 голосов
/ 02 марта 2019

Ваша проблема в том, что df5.iloc[i,0] обращается к единственной точке данных str в столбце, поэтому вы не можете применить к ней функцию str снова.Вы можете применить функцию str.contains сразу ко всему столбцу следующим образом:

df = df.loc[~df["col_name"].str.contains("dup")]

Однако функция str.contains не будет работать, если в столбце есть смешанные типы данных.В этом случае вам необходимо сначала преобразовать тип (df["col_name"] = df["col_name"].astype(str)).Или, если ваши дублирующиеся значения были единственными точками данных со строковым типом, вы можете просто отфильтровать их по типу следующим образом:

df.loc[~df["col_name"].apply(lambda x: isinstance(x, str))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...