Как преобразовать столбец чисел в дату в кадре данных в Python - PullRequest
0 голосов
/ 24 мая 2018

Мой фрейм данных содержит столбец для дат.Это выглядит так:

Index    Date
 0       12018
 1      102018
 2       32018
 3      122018
 4      112019
 5       32019
 6       42019

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

- 01-01-2018 
- 01-01-2018 
- 01-10-2018 
- 01-03-2018
...

или даже лучше на формат даты и времени.

Я пробовал эту функцию, которая отображает:

Ошибка типа: может только объединить список (не "str") в список

def adjust_date(dataset_in, col_name):
day = "01"
for col in col_name:
    if len(col_name)>5:
        month = col_name[0:1]
        year = col_name[2:5]
    else:
        month = col_name[0]
        year = col_name[1:4]

    result = year + "-" + month + "-" + day 
return result     

1 Ответ

0 голосов
/ 24 мая 2018

Я думаю to_datetime с указанным форматом должно быть достаточно:

df['Date'] = pd.to_datetime(df['Date'], format='%m%Y')
print (df)
   Index       Date
0      0 2018-01-01
1      1 2018-10-01
2      2 2018-03-01
3      3 2018-12-01
4      4 2019-11-01
5      5 2019-03-01
6      6 2019-04-01

print (df.dtypes)
Index             int64
Date     datetime64[ns]
dtype: object

Спасибо @Vivek Kalyanarangan за решение - добавьте strftime для пользовательского формата string (но потерянные даты и время):

df['Date'] = pd.to_datetime(df['Date'], format='%m%Y').dt.strftime('%d-%m-%Y')
print (df)
   Index        Date
0      0  01-01-2018
1      1  01-10-2018
2      2  01-03-2018
3      3  01-12-2018
4      4  01-11-2019
5      5  01-03-2019
6      6  01-04-2019

print (df.dtypes)
Index     int64
Date     object
dtype: object

print (df['Date'].apply(type))
0    <class 'str'>
1    <class 'str'>
2    <class 'str'>
3    <class 'str'>
4    <class 'str'>
5    <class 'str'>
6    <class 'str'>
Name: Date, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...