Как изменить значение целого столбца с помощью метода apply - PullRequest
0 голосов
/ 23 января 2019

Я хочу получить все даты в формате мм / дд / гггг

Все даты хранятся в 'some_column' и имеют смешанный формат

Я попытался сделать это с помощью метода apply. 1005 *

def modify(row):
    m = re.match(r'(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})', row['some_column'])

    if len(m.group(1)) == 1 :
        mm = '0'+ m.group(1)
    else :
        mm = m.group(1)

    if len(m.group(2)) == 1 :
        dd = '0' + m.group(2)
    else :
        dd = m.group(2)

    if len(m.group(3)) == 2 :
        yyyy = '19' + m.group(3)
    else :
        yyyy = m.group(3)

    row['some_column'] = mm+'/'+dd+'/'+yyyy ##<----------here

df.apply(modify, axis = 1)

Я знаю, где возникает проблема ... Есть ли способ установить значение столбца каждой строки таким образом ...

Или, если нет, то какова альтернатива

EDIT

Я вернул серию из функции и установил ее в исходный фрейм данных

def modify(row):
    m = re.match(r'(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})', row['some_column'])

    if len(m.group(1)) == 1 :
        mm = '0'+ m.group(1)
    else :
        mm = m.group(1)

    if len(m.group(2)) == 1 :
        dd = '0' + m.group(2)
    else :
        dd = m.group(2)

    if len(m.group(3)) == 2 :
        yyyy = '19' + m.group(3)
    else :
        yyyy = m.group(3)

    return mm+'/'+dd+'/'+yyyy

df['some_column'] = df.apply(modify, axis = 1)
...