繁体   English   中英

转换Pandas列的数据类型

[英]Converting the Data Type of Pandas Column

如果Pandas DataFrame列timestampMs的值是unicode类型,并且我们要将其转换为float ,则以下两种方法之间有什么区别吗?

df['timestampMs'].map(lambda x: float(x)/1000)

df['timestampMs'].astype('float')/1000

由于它们似乎都给出相同的结果,因此哪种方法更可取?

嗯...如果您关心速度,那么对于小型数据集,lambda方法要快一点。 对于大型数据集,请使用.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM