Панды меняют дату на более короткий формат - PullRequest
0 голосов
/ 06 октября 2019

G'day!

В мое ограниченное время работы с Python и Pandas снова и снова возникает один вопрос - что, если мои входные данные имеют дату / время в длинном формате, как их изменить наболее короткая версия?

Например, дата во входном файле будет выглядеть следующим образом:

10/10/2019 5:52:30 AM

Если я хочу выполнить с ней операции даты / времени, мне нужно ее преобразоватьto datetime:

df = pd.to_datetime(df['date'], format="%d/%m/%Y %H:%M:%S %p")

Так что теперь у меня есть объекты datetime в полном длинном формате. Но что, если мне нужен только день / месяц / год?

Я мог бы, конечно, преобразовать их обратно в строки, а затем преобразовать их обратно в формат даты и времени.

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

Мне больно смотреть на это ... Должен быть более простой способ сделать это, верно?

1 Ответ

1 голос
/ 06 октября 2019

Панды пол или раунд функции могут выполнять работу:

#Generate the data
df = pd.DataFrame({'year': [2015, 2016],
                'month': [2, 3],
                'day': [4, 5],
                'hour': [2, 23]})
df['Date']=pd.to_datetime(df)

#Floor and round datetime
df['Date'].dt.floor('d')
df['Date'].dt.round('d')

Выход для dt.floor:

0   2015-02-04
1   2016-03-05
Name: Date, dtype: datetime64[ns]

а для dt.round:

0   2015-02-04
1   2016-03-06
Name: Date, dtype: datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...