Я получил этоНовые Панды dataframe колонка не меняется
def email(cell):
pattern = '[A-Z0-9a-z._%+-][email protected][A-Z0-9a-z.-]+\.[A-Za-z]{2,4}'
try:
x = re.search(pattern, cell)
return x.group(0)
except AttributeError:
pass
def name(cell):
middle = '[A-Za-z]+\s[A-Za-z]\.\s[A-Za-z]+'
no_middle = '[A-Za-z]+\s[A-Za-z]+'
try:
x = re.search(middle, cell)
return x.group()
except AttributeError:
try:
x = re.search(no_middle, cell)
return x.group()
except AttributeError:
pass
def rename_cells(dataframe):
dataframe['J'] = ''
dataframe['K'] = ''
for index, row in dataframe.iterrows():
row['J'] = email(row.I)
row['K'] = name(row.I)
x = row.I.replace([str(row.K), str(row.J)], '')
row.I = x
Мои данные заполнены различными предметами из AH столбца, и столбец «Я» есть пункт, который я сопрягая с помощью регулярных выражений, чтобы вытащить определенный Предметы. Я тестировал регулярное выражение, и притяжения работают нормально, однако, когда я пытаюсь использовать функцию rename_cells, я заканчиваю столбцами J и K пустым с столбцом I так же, как и раньше, и без каких-либо замен. Есть предположения?
Образец данных:
df_stack = pd.DataFrame({'A':['aaa','bbb','ccc', 'eee'],'B':['aaa','bbb','ccc', 'eee'], 'C': ['aaa','bbb','ccc', 'eee'], 'D': ['aaa','bbb','ccc', 'eee'], 'E': ['aaa','bbb','ccc', 'eee'], 'F': ['aaa','bbb','ccc', 'eee'], 'G': ['aaa','bbb','ccc', 'eee'], 'H':['aaa','bbb','ccc', 'eee'], 'I':['John A. Smith [email protected]','Stacy Smith [email protected]','Jimbo G. Smith [email protected]', 'John Apple [email protected]']})
Это должно создать подобный dataframe стиль. Я хотел бы что-то похожее на это:
df_new = pd.DataFrame({'A':['aaa','bbb','ccc', 'eee'],'B':['aaa','bbb','ccc', 'eee'], 'C': ['aaa','bbb','ccc', 'eee'], 'D': ['aaa','bbb','ccc', 'eee'], 'E': ['aaa','bbb','ccc', 'eee'], 'F': ['aaa','bbb','ccc', 'eee'], 'G': ['aaa','bbb','ccc', 'eee'], 'H':['aaa','bbb','ccc', 'eee'], 'I':['John A. Smith', 'Stacy Smith ','Jimbo G. Smith', 'John Apple'], 'J': ['[email protected]', '[email protected]', '[email protected]', '[email protected]']})
Спасибо за любую проницательность
You» не работая на копии, а не в представлении, вам необходимо прочитать следующее: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy – EdChum
Также вы можете создать новый строк, вызывая 'apply', что было бы намного легче читать, чем то, что вы делаете, – EdChum
, поэтому я попытался заменить row ['J'] и row ['K'] с row.loc ('J') и row.loc ('K'), но это оказалось в некоторых сообщениях об ошибках. Я просто делаю все это неправильно с помощью цикла для индекса и строки? Должен ли я просто применить функцию непосредственно к row.loc ('I')? – nahata5