pandas to_datetime преобразует строку даты и времени в 0 - PullRequest
0 голосов
/ 04 июня 2019

У меня есть столбец в df, который содержит datetime строк,

inv_date
24/01/2008
15/06/2007 14:55:22
08/06/2007 18:26:12
15/08/2007 14:53:25
15/02/2008
07/03/2007
13/08/2007

Я использовал pd.to_datetime с форматом %d%m%Y для преобразования строк в datetime значения;

pd.to_datetime(df.inv_date, errors='coerce', format='%d%m%Y')

Я получил

inv_date
24/01/2008
0
0
0
15/02/2008
07/03/2007
13/08/2007

формат выводится из inv_date как наиболее распространенный формат даты и времени;Мне интересно, как не конвертировать 15/06/2007 14:55:22, 08/06/2007 18:26:12, 15/08/2007 14:53:25 в 0s, но 15/06/2007, 08/06/2007, 15/08/2007.

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Используйте обычный вызов pd.to_datetime, затем используйте .dt.date:

>>> pd.to_datetime(df.inv_date).dt.date
0    2008-01-24
1    2007-06-15
2    2007-08-06
3    2007-08-15
4    2008-02-15
5    2007-07-03
6    2007-08-13
Name: inv_date, dtype: object
>>> 

Или, как упомянул @ChrisA, вы также можете использовать, единственное, формат панд уже хорош, так что пропустите эту часть:

>>> pd.to_datetime(df.inv_date.str[:10], errors='coerce')
0    2008-01-24
1    2007-06-15
2    2007-08-06
3    2007-08-15
4    2008-02-15
5    2007-07-03
6    2007-08-13
Name: inv_date, dtype: object
>>> 
1 голос
/ 04 июня 2019

Вы также можете попробовать это:

df = pd.read_csv('myfile.csv', parse_dates=['inv_date'], dayfirst=True)
df['inv_date'].dt.strftime('%d/%m/%Y')
0    24/01/2008
1    15/06/2007
2    08/06/2007
3    15/08/2007
4    15/02/2008
5    07/03/2007
6    13/08/2007

Надеюсь, это тоже поможет.

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