Конвертировать дату столбца DataFrame из формата 03.02.2007 в 20070223 с помощью Python - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть фрейм данных с «Дата» и «Значение», где Дата в формате м / д / гггг. Мне нужно конвертировать в ггггммдд.

df2= df[["Date", "Transaction"]]

Я знаю, что datetime может сделать это для меня, но я не могу заставить его принять мой формат.

примеры файлов данных:

6/15/2006,-4.27,
6/16/2006,-2.27,
6/19/2006,-6.35,

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Сначала необходимо преобразовать в datetime, используя pd.datetime, затем вы можете отформатировать его, как пожелаете, используя strftime:

>>> df
        Date  Transaction
0  6/15/2006        -4.27
1  6/16/2006        -2.27
2  6/19/2006        -6.35

df['Date'] = pd.to_datetime(df['Date'],format='%m/%d/%Y').dt.strftime('%Y%m%d')

>>> df
       Date  Transaction
0  20060615        -4.27
1  20060616        -2.27
2  20060619        -6.35
0 голосов
/ 05 ноября 2018

Для необработанного решения на Python вы можете попробовать что-то из следующего (предполагая, что файл данных является строкой).

datafile="6/15/2006,-4.27,\n6/16/2006,-2.27,\n6/19/2006,-6.35"

def zeroPad(str, desiredLen):
        while (len(str) < desiredLen):
                str = "0" + str
        return str

def convToYYYYMMDD(datafile):
        datafile = ''.join(datafile.split('\n')) # remove \n's, they're unreliable and not needed
        datafile = datafile.split(',') # split by comma so '1,2' becomes ['1','2']

        out = []

        for i in range(0, len(datafile)):
                if (i % 2 == 0):
                        tmp = datafile[i].split('/')
                        yyyymmdd = zeroPad(tmp[2], 4) + zeroPad(tmp[0], 2) + zeroPad(tmp[1], 2)
                        out.append(yyyymmdd)
                else:
                        out.append(datafile[i])

        return out

print(convToYYYYMMDD(datafile))

Это выводит: ['20060615', '-4.27', '20060616', '-2.27', '20060619', '-6.35'].

0 голосов
/ 05 ноября 2018

Вы можете сказать:

df['Date']=df['Date'].dt.strftime('%Y%m%d')

dt метод accesor strftime теперь ваш верный друг.

Примечание: если вы еще не конвертировали в pandas datetime, выполните:

df['Date']=pd.to_datetime(df['Date']).dt.strftime('%Y%m%d')

Выход:

       Date  Transaction
0  20060615        -4.27
1  20060616        -2.27
2  20060619        -6.35
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...