У меня есть дата-карта данных pandas, содержащая данные из файла csv. Я хочу конкатенировать несколько столбцов, я сначала жестко запрограммировал это с помощью простой конкатенации столбцов pandas, тогда я реорганизовал код как более общий, но я сильно оштрафован с точки зрения времени выполнения, вот две версии конкатенации и их тайминги:ухудшение производительности при переключении с конкатенации столбцов pandas на использование применяются к dataframe
t0 = time.time()
cleaned_data_set1 = data_set.col1.map(str)+" "+data_set.col2.map(str)+ " " + data_set.col3.map(str)
t1 = time.time()
print t1-t0
listOfObjectAttributeNames = ["col1","col2","col3"]
t0 = time.time()
cleaned_data_set = data_set.apply(lambda x: " ".join([str(el) for el in x[listOfObjectAttributeNames]]), axis=1)
t1 = time.time()
здесь время выполнения соответственно:
1.20745110512
171.689060926
Как я могу улучшить время выполнения второй версии?
Не ответ, но стоит отметить, что лучше использовать 'timeit' для измерения времени выполнения – yangjie
Первая версия - это векторизованный подход, это всегда лучший подход, потому что он быстрее. Вторая версия - это не-векторизованный подход, вы оптимизируете его, используя версию 1. – firelynx
@firelynx, спасибо за помощь, я бы хотел использовать первую версию, но я все еще не могу указать имена столбцов динамически, можете ли вы помочь с этим? – MedAli