значения datetime, случайно конвертируемые в целые числа при переназначении - PullRequest
0 голосов
/ 05 июня 2019

У меня есть следующие df,

inv_date
24/01/2008
nan
nan
nan
13/08/2007
02/04/2007
02/04/2007
03/04/2007
03/04/2007
03/04/2007
04/04/2007
09/08/2007 12:16:55

Все значения в inv_date являются строками, я попытался использовать некоторый код для преобразования их в datetime64;format в выводе из inv_date в качестве наиболее распространенного формата даты, и причина, по которой я не делаю нарезки str[:10] inv_date, заключается в том, что большинство значений не всегда просто день / месяц / год, иногда этотакже может включать часы / мин / сек, поэтому срез значений в фиксированную позицию не идеален;

failed_rows = pd.isnull(pd.to_datetime(data.df['inv_date'], errors='coerce', format='%d/%m/%Y'))

if failed_rows.sum():
   df.loc[failed_rows, 'inv_date'] = pd.to_datetime(df.loc[failed_rows, 'inv_date'], errors='coerce').dt.floor('D')

   df.loc[~failed_rows, 'inv_date'] = pd.to_datetime(df.loc[~failed_rows, 'inv_date'], errors='coerce', format='%d/%m/%Y')

получается

inv_date
1201132800000000000
None
None
None
1186963200000000000
1175472000000000000
1175472000000000000
1175558400000000000
1175558400000000000
1175558400000000000
1175644800000000000
1189209600000000000

Идеальный результат должен выглядеть следующим образом

inv_date
24/01/2008
NaT
NaT
NaT
13/08/2007
02/04/2007
02/04/2007
03/04/2007
03/04/2007
03/04/2007
04/04/2007
09/08/2007

с dtype datetime64.

1 Ответ

1 голос
/ 05 июня 2019

Просто конвертируйте в datetime, нормализуйте и конвертируйте обратно в строку.NaT сохраняются.

(pd.to_datetime(df['inv_date'], errors='coerce')
   .dt.normalize()
   .dt.strftime('%d/%m/%Y'))

0     24/01/2008
1            NaT
2            NaT
3            NaT
4     13/08/2007
5     04/02/2007
6     04/02/2007
7     04/03/2007
8     04/03/2007
9     04/03/2007
10    04/04/2007
11    08/09/2007
Name: inv_date, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...