pandas удаляет для цикла

#python #pandas #for-loop

#python #pandas #для цикла

Вопрос:

Теперь у меня есть следующий цикл for, от которого я хочу избавиться, поскольку он слишком медленный.

 for i in range(len(df)):
    df.loc[i,"date_time"] = datetime.datetime.strptime(str(df.loc[i,"Date"]   ' '   df.loc[i,"Time"]), '%d-%m-%Y %H:%M:%S')
  

Ввод:

 index. date        time 
1      10-10-2010  00:00:00
2      10-10-2010  00:00:03
3      10-10-2010  00:00:06
4      10-10-2010  00:00:09
  

Желаемый результат, с одним столбцом с объектами datetime:

 index. date        time      date_time
1      10-10-2010  00:00:00  10-10-2010  00:00:00
2      10-10-2010  00:00:03  10-10-2010  00:00:00
3      10-10-2010  00:00:06  10-10-2010  00:00:00
4      10-10-2010  00:00:09  10-10-2010  00:00:00
  

Комментарии:

1. Пожалуйста, поделитесь примером ввода с ожидаемым результатом.

2. Вы могли бы использовать df['Date'].apply() . А затем имеет функцию преобразования внутри apply. Вы можете проверить документацию здесь

3. @AnuragReddy, .apply() все еще перебирает строки, поэтому это будет одинаково медленно.

Ответ №1:

По возможности используйте векторные операции вместо циклов. Что-то вроде этого должно работать (протестировано на включенном примере):

 df['date_time'] = pd.to_datetime(df['date']   ' '   df['Time'])