Преобразование строковой даты в дату и сброс времени в кадре данных - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь преобразовать строковую дату и время (например, «30.06.2015 0:00») в просто дату в следующем формате:% Y /% m /% d. Я пытаюсь сделать это для всех значений в столбце данных. У меня почти есть это, но я не могу избавиться от части времени. Мне также нужно применить этот метод к другому столбцу, который может иметь нулевые / пустые значения. Это то, что я пробовал, какие-либо предложения о том, как заставить это работать?

cnms_df['STATUS_DATE'] = pd.to_datetime(cnms_df['STATUS_DATE'], format="%Y/%m/%d")

ValueError: остаются не преобразованные данные: 0: 00

*** Пример данных (не включает в себя все поля; длина которых 30+) enter image description here

Вот примерный ряд первых 5 значений для STATUS_DATE:

0    6/30/2015 0:00
1    6/24/2015 0:00
2    6/24/2015 0:00
3    6/24/2015 0:00
4    6/24/2015 0:00
Name: STATUS_DATE, dtype: object

Ответы [ 3 ]

2 голосов
/ 25 февраля 2020

Попробуйте:

cnms_df['STATUS_DATE'] = pd.to_datetime(cnms_df['STATUS_DATE'][:cnms_df['STATUS_DATE'].index(' ')[0]], format="%Y/%m/%d")

Предполагая, что ваши даты совпадают, это просто вопрос отрезания временного сегмента с помощью split. Надеюсь, это поможет.

1 голос
/ 25 февраля 2020

Вы можете отбросить часть времени перед преобразованием строковой даты в datetime64 [нс].

df = pd.DataFrame({'date' : ['6/30/2015 0:00']})
df['new_date'] = pd.to_datetime(df['date'].str.split().str[0], format = '%m/%d/%Y')
print(df)


date    new_date
0   6/30/2015 0:00  2015-06-30

df.dtypes

date                object
new_date    datetime64[ns]

Примечание. Я создал столбец new_date для сравнения с датой строкового формата, в идеале вам просто нужно назначить дата в той же переменной

1 голос
/ 25 февраля 2020

если все ваши даты даты '%d/%m/%Y %H:%M, тогда это будет работать

df = pd.DataFrame({'date' : ['6/30/2015 0:00', '6/30/2015 15:35']})


print(df)

              date
0   6/30/2015 0:00
1  6/30/2015 15:35

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

print(df)

        date
0 2015-06-30
1 2015-06-30

print(df.dtypes)

date    datetime64[ns]
dtype: object
...