Хм ... если вам небезразлична скорость, метод лямбда немного быстрее для небольших наборов данных. Для больших наборов данных идут по методу .astype()
(я лично считаю его более читаемым):
import time
import timeit
import pandas as pd
num_elements = 100
times = [unicode(time.clock()) for x in range(num_elements)]
df = pd.DataFrame(times)
def first_method():
df[0].map(lambda x: float(x)/1000)
def second_method():
df[0].astype('float')/1000
num_reps = 15000
print("First method time for {} reps: {}".format(num_reps, timeit.timeit(first_method, number=num_reps)))
print("Second method time for {} reps: {}".format(num_reps, timeit.timeit(second_method, number=num_reps)))
Когда num_elements = 100
я получаю:
First method time for 15000 reps: 1.95685731342
Second method time for 15000 reps: 2.22381265566
Когда num_elements = 1000
я получаю:
First method time for 15000 reps: 12.0774245498
Second method time for 15000 reps: 6.77670391568
Читать эту https://github.com/pydata/pandas/blob/a7437430b5cb62e49a79b64d18eccfb2b4d6367f/pandas/core/internals.py#L375 и принять решение о приемлемой зависимости от ваших критериев для "предпочтительных '. Ваш первый пример не будет выполнен, если одно значение - «-», например. – jonnybazookatone