2015-08-19 2 views
2

У меня есть серия datetime как один столбец в кадре данных Pandas - df ['timeStamp']. Я хочу преобразовать каждый объект datetime в этот столбец в строку. Там существует несколько функций питона, который преобразует один объект типа DateTime в строку, как:Преобразование серии Datetime в строку в pandas без цикла

str(datetime) 
datetime.format(datetime) 
datetime.strftime('%m%d%Y') 

Но чтобы получить то, что я хочу, я бы перебрать весь столбец и преобразовывать каждый объект в строку по отдельности. Что-то я пытаюсь избежать. Мне интересно, есть ли какая-нибудь функция Pandas/Python, чтобы сделать это за один раз. Что-то противоположное функции to_datetime (которая преобразует str в datetime за один проход без цикла).

+0

@SDilmac, который предназначен для перехода от строки к дате. OP хочет обратное – joris

+0

Не нужно указывать формат функции to_datetime. Он отлично работает для меня, не давая ему формат –

ответ

4

У вас есть несколько вариантов здесь. Во-первых вы можете сделать astype(str):

In [1]: s = pd.Series(pd.date_range('2015-01-01 09:00:00', periods=3)) 

In [2]: s 
Out[2]: 
0 2015-01-01 09:00:00 
1 2015-01-02 09:00:00 
2 2015-01-03 09:00:00 
dtype: datetime64[ns] 

In [3]: s.astype(str) 
Out[3]: 
0 2015-01-01T10:00:00.000000000+0100 
1 2015-01-02T10:00:00.000000000+0100 
2 2015-01-03T10:00:00.000000000+0100 
dtype: object 

Но это даст вам стандартное Numpy представление DateTime в формате строки.

Другой вариант, где вы можете контролировать формат с использованием метода strftime в применить (это будет фактически эквивалентно записи цикла, но короче):

In [4]: s.apply(lambda x: x.strftime('%m%d%Y')) 
Out[4]: 
0 01012015 
1 01022015 
2 01032015 
dtype: object 

Наконец, в предстоящем 0.17.0 релиз (функция в настоящее время находится в версии разработки), вы также сможете:

In [5]: s.dt.strftime('%d/%m/%Y') 
Out[5]: 
0 01/01/2015 
1 02/01/2015 
2 03/01/2015 
dtype: object 
Смежные вопросы