Как преобразовать строку в формат даты - PullRequest
0 голосов
/ 08 марта 2020

Привет, ребята, был бы признателен за помощь. Я анализирую серию (набор столбцов), которая имеет следующий формат даты:

'1060208'

Первые три цифры представляют год, в котором first di git, для сравнения существует «1». в приведенном выше случае 2006 год. 4-й и 5-й ди git представляют месяц, а остальные представляют день. Я хочу преобразовать эти даты во что-то вроде

106-02-08

, чтобы я мог использовать .groupby для сортировки в месяц или год. Вот мой код

    class Data:
        def convertdate(self):
            self.dates.apply(lambda x:x[0:3] + '-' + x[3:5] + '-' + x [5:7])
        return self.dates

, когда я запускаю это, я получаю ошибку:

    TypeError: 'int' object is not subscriptable

Можете ли вы сказать мне, что пошло не так? Или вы можете предложить какой-нибудь альтернативный способ сделать это? Большое вам спасибо.

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Предполагая, что даты - это список целых чисел, вы можете сделать:

input_dates = [1060208, 1060209]
input_dates_to_str = map(lambda x: str(x), input_dates)
output = list(map(lambda x: '-'.join([x[0:3], x[3:5], x[5:]]), input_dates_to_str))

В любом случае, при работе с датами я предлагаю использовать пакет datetime.

0 голосов
/ 08 марта 2020

Быстрый ответ на ваш вопрос: 1060208 - это целое число, целые числа не подлежат подписке, поэтому вам нужно заменить его на строку.

Некоторые другие мысли: Где ваши данные? Это все в pandas кадре данных? Если так, почему вы пишете классы для преобразования ваших данных? Есть лучшие / более быстрые способы сделать это. Как преобразовать дату вашего intgeger в строку, избавиться от первого di git и преобразовать его в datetime.

Что означает «где 1 помещается для целей сравнения»? Это можно было бы записать таким образом, но, очевидно, дата и флаг (я полагаю, это какой-то флаг) не должны быть представлены в одном поле. Так почему бы вам не поместить это 1 в собственное поле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...