#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'])