从列串联切换到在datafram上使用apply时性能下降

2024-04-25 10:14:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个保存csv文件数据的数据框。我想连接几个列,我首先用简单的pandas列连接硬编码,然后我将代码重构为更通用的,但是我在运行时方面受到了严重的惩罚,下面是连接的两个版本及其计时:

    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

如何改进第二个版本的运行时间?你知道吗


Tags: 数据版本mapdatatimeelcol2col3
1条回答
网友
1楼 · 发布于 2024-04-25 10:14:36

我设法保留了矢量化版本,并将操作概括如下:

        t0 = time.time()

        listOfObjectAttributeNames = ["col1","col2","col3"]

        cleaned_data_set = ""
        for i in listOfObjectAttributeNames:
            cleaned_data_set = cleaned_data_set + data_set[i].map(str)

        t1 = time.time()

        print t1 - t0 

运行时结果:

 1.04347801208

相关问题 更多 >