#python-3.x #regex
#python-3.x #регулярное выражение
Вопрос:
Цель состоит в том, чтобы отфильтровать данные, которые соответствуют регулярному выражению в столбце B, в то время как столбец A равен нулю.
df = pd.read_csv('DATA.csv',sep=',',error_bad_lines=False)
fd = df[(df['B'].str.match('.*color:*') |
df['B'].str.match('colorful:*')) amp; df.A.str.match('^s*$')]
Результат, полученный с помощью этого, соответствует всем экземплярам слова ‘color’ в столбце B вместо точного соответствия ‘color:’ или ‘colorful:’. Кроме того, этот код работает со строками столбца B, где соответствующие значения в столбце A не равны нулю, вместо того, чтобы работать только со строками, где значения столбца A равны нулю.
Комментарии:
1. Что вы подразумеваете под нулевым значением?
2. В этой ячейке нет значений. Оно пустое
3. Как вам удается получать пустые ячейки фрейма данных из
read_csv
?4. DATA.csv содержит два столбца A и B. В столбце A некоторые ячейки пусты, как в ‘NaN’. Необходимо идентифицировать эти пустые ячейки с помощью регулярного выражения
5. пытался использовать str.match(‘^ s * $’) для сопоставления этих пустых ячеек .. но это не соответствует
Ответ №1:
есть 2 способа: первый — использовать метод .isnull():
df.A.isnull()
вторым будет:
df.A.fillna('').str.contains('^$')
однако подход regex (второй) не является оптимальным
Комментарии:
1. df.A.isnull()-> это опустило нулевые значения.. большое спасибо