Форум сайта python.su
Попробовал
Прикреплённый файлы:
2021-08-17_13-00-44.png (8,4 KБ)
Офлайн
Пробовал так:
import re
#X = xls.copy().head(2)
# Y = X['number'].to_string()
#for row in X:
# Y = X.to_string()
# y_n = (''.join(re.split('"[a-zA-Z0-9]+"', Y))) #"[a-zA-Z0-9]+"
# return y_n
# X['number'] = y_n
X
import re
text = xls['number'].copy().head(2)
text = text.to_string()
pat = r' "[a-zA-Z0-9]+"'
rep = 'DD'
out = re.sub(pat, rep, text)
X['number'] = out
X
Офлайн
Provi
Попробовал
Прикреплённый файлы:
attachment 2021-08-17_13-00-44.png (8,4 KБ)
ProviТак это же не кавычки, а скобки.
Не помогает. чего то я не понимаю.
>>> import re >>> >>> text = 'abc def (ghi) jkl(lmn) opq' >>> pat = r' \([^)]+\)' >>> rep = 'X' >>> >>> out = re.sub(pat, rep, text) >>> >>> text 'abc def (ghi) jkl(lmn) opq' >>> out 'abc defX jkl(lmn) opq' >>>
Офлайн
py.user.nextО спасибо.
import re
text = xls['number'].copy().head(5)
text = text.to_string()
pat = r'\([^)]+\)'
rep = ''
out = re.sub(pat, rep, texts)
xls['number'] = out
xls
Офлайн
ProviНужно полный код выложить. Где-то там ошибка.
Я жду, что он у меня в каждую ячейку запишет обновленное значение, а он в каждую ячейку пишет одно и то же значение, и при этом все значения которые получились в дата сете.
ProviНе, я думаю, что скобка тоже сотрётся. Поэтому скобку тебе надо оставить. Чтобы оставить что-то, нужно использовать группы.
И я правильно понимаю, если у меня нужно заменить пробел который идет перед скобками, то нужно просто добавить в код пробел перед скобкой?
>>> import re >>> >>> text = 'abc (def) ghi' >>> pat = r'(\()([^)]+)(\))' >>> rep = r'\g<1>\g<1>\g<2> \g<2> \g<2>\g<3>\g<3>' >>> >>> out = re.sub(pat, rep, text) >>> >>> text 'abc (def) ghi' >>> out 'abc ((def def def)) ghi' >>>
Отредактировано py.user.next (Авг. 17, 2021 22:55:28)
Офлайн
Спасибо всем за помощь с обработкой регулярных выражений.
У меня на входе есть дата фрейм. несколько столбцов и строк. Пример 2 строк во вложении.
Как мне в строку text, передать сначала первую ячейку, первой строки, обработка есть , а потом вернуть назад.
А потом так же поступить с каждой последующей строкой?
Прикреплённый файлы:
2021-08-17_13-00-44.png (8,4 KБ)
Офлайн
ProviПереведи pandas-данные в данные питона полностью, потом с ними работай. А потом вернёшь обратно данные питона в pandas-данные. Если не умеешь пользоваться pandas'ом, лучше от него отвязываться. Он только затормозит твою работу и преимуществ не даст. Соответственно, ты сначала один раз так обработаешь всё без pandas'а, второй раз обработаешь всё без pandas'а, а потом уже задумаешься “а нахер мне вообще этот pandas нужен? чтобы с Excel'я просто данные грузить? это можно делать и другим способом”.
У меня на входе есть дата фрейм. несколько столбцов и строк. Пример 2 строк во вложении.
Как мне в строку text, передать сначала первую ячейку, первой строки, обработка есть , а потом вернуть назад.
А потом так же поступить с каждой последующей строкой?
Офлайн
а можно примерный код как туда обратно данные сгонять?)
я это пытаюсь сделать так:
X = xls['number'].copy().head(5)
text = X.to_string()
pat = r'(\()([^)]+)(\))'
rep = r''
out = re.sub(pat, rep, text)
X['number'] = out
Офлайн
ProviПеревёл pandas-данные в словарь питона, поработал со словарём питона, перевёл словарь питона в pandas-данные.
а можно примерный код как туда обратно данные сгонять?)
>>> import pandas as pd >>> >>> df = pd.DataFrame(data=[{'a': 1, 'b': 2, 'c': 3}], index=range(3)) >>> df a b c 0 1 2 3 1 1 2 3 2 1 2 3 >>> >>> import json >>> >>> dct = json.loads(df.to_json()) >>> dct {'a': {'0': 1, '1': 1, '2': 1}, 'b': {'0': 2, '1': 2, '2': 2}, 'c': {'0': 3, '1': 3, '2': 3}} >>> >>> dct['c']['0'] *= 2 >>> dct {'a': {'0': 1, '1': 1, '2': 1}, 'b': {'0': 2, '1': 2, '2': 2}, 'c': {'0': 6, '1': 3, '2': 3}} >>> >>> out = pd.DataFrame(dct) >>> out a b c 0 1 2 6 1 1 2 3 2 1 2 3 >>>
Отредактировано py.user.next (Авг. 26, 2021 17:30:28)
Офлайн