Функция, которая ищет необходимые символы в строках?
Необходимо, чтобы, где в коментарие было слово в скобках "(удален)", "(удалил товар)" и т.д., брались, либо все 3 строки с данными, либо строка где адрес, дата, номер (лучше так).
Данo:
import numpy as np
import pandas as pd
data = pd.DataFrame({'№':['1', 'NaN', 'NaN', '2','NaN', 'NaN'],
'Дата':['2020-06-03', 'NaN', 'NaN', '2020-06-05', 'NaN', 'NaN'],
'Адрес':['Delhi', 'NaN', 'NaN', 'Kannauj', 'NaN', 'NaN'],
'Остальное':['Цена', 'Остаток', 'Комментарий','Цена', 'Остаток', 'Комментарий']
'Список1':['0', '0', '(удалено)','0', '1','(выкладка)']}
pat = r"(?:удален)"
mask = data.iloc[:, 4].str.contains(pat)
Выводит:
ValueError Traceback (most recent call last)
<ipython-input-111-42532444bc05> in <module>()
----> 1 data[mask]
1 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/common.py in is_bool_indexer(key)
134 na_msg = "Cannot mask with non-boolean array containing NA / NaN values"
135 if isna(key).any():
--> 136 raise ValueError(na_msg)
137 return False
138 return True
ValueError: Cannot mask with non-boolean array containing NA / NaN values
Желаемый результат:
data_delete = pd.DataFrame({'№':['1', 'NaN', 'NaN' ],
'Дата':['2020-06-03', 'NaN', 'NaN'],
'Адрес':['Delhi', 'NaN', 'NaN'],
'Остальное':['Цена', 'Остаток', 'Комментарий']
'Список1':['0', '0', '(удалено)']}
data_other = pd.DataFrame({'№':['2','NaN', 'NaN'],
'Дата':[ '2020-06-05', 'NaN', 'NaN'],
'Адрес':['Kannauj', 'NaN', 'NaN'],
'Остальное':['Цена', 'Остаток', 'Комментарий']
'Список1':['0', '1','(выкладка)']}
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
попробуйте так:
pat = r"(?:удален)"
mask = data.iloc[:, 3].str.contains(pat)
delete = data[mask]
other = data[~mask]
результат:
In [105]: delete
Out[105]:
Пользователь Товар Адрес Комментарии
0 Катя кефир Delhi (товар удален)
1 Саша молоко Kanpur (удалено)
In [106]: other
Out[106]:
Пользователь Товар Адрес Комментарии
2 Маша творог Allahabad (фото)
3 Петя колбаса Kannauj (выкладка)