Панды - проверьте, есть ли в каком-либо столбце дата-время, и измените его на строку формата даты (гггг-мм-дд) - PullRequest
0 голосов
/ 18 января 2019

Как мы можем использовать pandas, чтобы проверить, является ли какой-либо столбец столбцом типа даты и времени, а затем преобразовать только этот столбец в столбец типа строки формата даты (гггг-мм-дд).

У меня есть несколько столбцов с указанием даты и времени. Поэтому я не могу перейти по имени столбца и изменить его. Но скорее предпочел бы способ, который проверяет, а затем изменяет его.

Пожалуйста, помогите мне с этим.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы можете проверить, как показано ниже, с помощью df.dtypes:

>>> df
   PERSON ID MOVING DATE           PLACE
0          1  2018-01-01        New York
1          1  2018-01-20  Rio de Janeiro
2          1  2018-02-13          London
3          2  2017-06-12          Seatle
4          2  2016-10-10      New Mexico
5          3  2017-09-19       Sao Paulo
6          3  2015-12-11      Bangladesh


>>> df.dtypes
PERSON ID               int64
MOVING DATE    datetime64[ns]
PLACE                  object
dtype: object

Или, в частности, если вы хотите увидеть, какие столбцы являются датой и временем, используйте numpy следующим образом. ТАК, NumPy дает вам подробный процесс выбора ..

>>> df.select_dtypes(include=[np.datetime64])
  MOVING DATE
0  2018-01-01
1  2018-01-20
2  2018-02-13
3  2017-06-12
4  2016-10-10
5  2017-09-19
6  2015-12-11

Вы можете сделать то же самое, чтобы определить, имеют ли столбцы номера

>>> df.select_dtypes(include=[np.number])
   PERSON ID
0          1
1          1
2          1
3          2
4          2
5          3
6          3

другой, чтобы определить, имеют ли столбцы тип объекта:

>>> df.select_dtypes(include=[np.object])
            PLACE
0        New York
1  Rio de Janeiro
2          London
3          Seatle
4      New Mexico
5       Sao Paulo
6      Bangladesh
0 голосов
/ 18 января 2019
df = pd.DataFrame(data={'date':(['2018-12-08 00:00:00','2018-12-08 00:10:00','2018-12-08 01:10:00']),'B':[5,4,3],'C':[4,3,2]})

>>df

    date                B   C
0   2018-12-08 00:00:00 5   4
1   2018-12-08 00:10:00 4   3
2   2018-12-08 01:10:00 3   2

>>df.dtypes

date     object
B        int64
C        int64

>>df[df.select_dtypes(['object']).columns]=df[df.select_dtypes(['object']).columns].apply(pd.to_datetime)

Опубликовать это вы можете позвонить dt.date на серию, как:

>>df['date'].dt.date
0    2018-12-08
1    2018-12-08
2    2018-12-08

Или для выбора нескольких столбцов (обратите внимание, что выше может произойти сбой, если у вас есть другие столбцы объекта, не похожие на дату, в этом случае используйте, как показано ниже)

df[['col1','col2']] = df[['col1','col2']].apply(pd.to_datetime)

Из документов: unuder select_dtypes

Для выбора даты и времени используйте np.datetime64, 'datetime' или 'datetime64' Чтобы выбрать timedeltas, используйте np.timedelta64, 'timedelta' или 'timedelta64

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